usando “touch” para criar diretórios?

1

1) no diretório "A":

encontrar . tipo f > a.txt

2) no diretório "B":
cat a.txt | enquanto ler FILENAMES; toque em "$ FILENAMES"; feito

3)
Resultado: o 2) "cria os arquivos" [quero dizer apenas com o mesmo nome de arquivo, mas com tamanho de 0 Byte] ok. Mas se houver subdiretórios no diretório "A", então o 2) não poderá criar os arquivos no subdir, porque não há diretórios nele.

Pergunta: existe uma maneira de o "toque" criar diretórios?

    
por LanceBaynes 17.01.2011 / 10:03

2 respostas

4

Qual é o resultado final desejado?

Se você está tentando duplicar uma estrutura de diretório, existem maneiras mais fáceis. Soluções de sincronização vêm à mente primeiro.

por exemplo,

rsync -a /source/dir/ /dest/dir/ --include \*/ --exclude \*

Isso irá recriar toda a estrutura de diretórios. Você pode então executar seu comando de toque para terminar o resto.

Como mencionado anteriormente, poderemos encontrar uma solução mais elegante se soubermos o problema completo:)

    
por 17.01.2011 / 10:34
2

Você pode usar este script. Você precisa usar chmod +x scriptname

#!/usr/bin/env ruby
# touchMakingDirs: a Ruby script to be able to touch a file and optionally create the directories necessary
# by Dan Rosenstark 2013-03-18 
if __FILE__ == $0
  if ARGV.length == 0
    puts "Sorry, include one argument for filename"
    exit
  end

  filename = ARGV[0]
  puts "Will touch file #{filename}"
  path = File.dirname(filename)
  #filename = File.basename(filename)  
  'mkdir -p \"#{path}\"'
  'touch \"#{filename}\"'
end

Trabalhou em alguns pequenos testes. Deixe-me saber se há um caso de teste que eu perdi. Eu uso como: touchMakingDirs blah/blah/whatever/who.txt onde eu nomeei o roteiro touchMakingDirs e coloquei no meu caminho.

    
por 18.03.2013 / 20:42

Tags