2010-11-10 6 views
1

Je souhaite créer une structure de répertoire vide bar2 à partir d'un arborescence de répertoires non vide bar1. Les deux bar1 et bar2 sont au même niveau hiérarchique. Comment puis-je utiliser mkdir de manière efficace pour que les répertoires intermédiaires soient automatiquement créés?UNIX, comment maintenir la structure du répertoire?

  1. Pour créer une liste de répertoires à partir de la barre 1, recherchez et commandez-la si nécessaire.
  2. En utilisant awk, supprimez toutes les branches de la liste afin que je puisse exécuter `mkdir uniquement sur les feuilles.
  3. Run mkdir avec la liste pour reproduire la structure du répertoire des bar1
+0

Pourquoi est-ce que seules les feuilles sont identifiées? – Xailor

Répondre

2

La partie la plus difficile de votre question (comment lister uniquement les répertoires de feuilles) a été asked before on SO. Vous pouvez utiliser le il combo find/awk et exécutez mkdir -p sur chaque résultat:

[bar1] $ find . -type d | sort | awk '$0 !~ last {print last} {last=$0} END {print last}' | xargs -Ix mkdir -p ../bar2/x 
+0

Merci, c'était très utile – HelloWorld

6
cd bar1 
find . -type d -exec mkdir -p '../bar2/{}' \; 
+0

Ahh, bat moi à ça. – cdhowie

+0

Cela ne supprime pas les feuilles, il s'exécute mkdir pour chaque répertoire –

+0

Er. s/feuilles/branches/dans mon commentaire. C'est-à-dire, pour la structure de répertoire bar2/a/b/c, il fonctionnera trois mkdirs au lieu d'un –

2

Vous pouvez utiliser rsync à la place:

rsync -r -f '+ */' -f '- *' bar1 bar2 

qui est, plus bavard:

rsync --verbose --recursive --include '*/' --exclude '*' bar1 bar2 
Questions connexes