mit" Touch " Verzeichnisse erstellen?

1) im Verzeichnis" A":

finden . -Typ f > a.txt

2) im Verzeichnis "B":
cat a.txt | while read DATEINAMEN; do touch "$DATEINAMEN"; done

3)
Ergebnis: Das 2) "erstellt die Dateien" [ich meine nur mit demselben Dateinamen, aber mit 0 Byte Größe] ok. Wenn sich jedoch im Verzeichnis "A" Unterverzeichnisse befinden, kann der 2) die Dateien im Unterverzeichnis nicht erstellen, da sich keine Verzeichnisse darin befinden.

Frage: Gibt es einen Weg, den "touch" erzeugen kann verzeichnisse?

 1
Author: LanceBaynes, 2011-01-17

2 answers

Was ist Ihr gewünschtes Ergebnis?

Wenn Sie versuchen, eine Verzeichnisstruktur zu duplizieren, gibt es einfachere Möglichkeiten. Synchronisierungslösungen kommen mir zuerst in den Sinn.

Z. B.

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

Dadurch wird die gesamte Verzeichnisstruktur neu erstellt. Sie können dann Ihren Touch-Befehl ausführen, um den Rest zu beenden.

Wie bereits erwähnt, können wir möglicherweise eine elegantere Lösung finden, wenn wir das vollständige Problem kennen:)

 4
Author: John T,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2011-01-17 09:34:49

Sie könnten dieses Skript verwenden. Sie müssen 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

Es hat in ein paar kleinen Tests funktioniert. Lass mich wissen, ob es einen Testfall gibt, den ich verpasst habe. Ich benutze es wie folgt: touchMakingDirs blah/blah/whatever/who.txt wo ich das Skript touchMakingDirs benannt und in meinen Pfad eingefügt habe.

 2
Author: Dan Rosenstark,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2013-03-18 19:42:58