J'essaie de créer une arborescence de répertoires de A à Z où le répertoire suivant se trouve dans le répertoire actuel.
Par exemple: B est dans A et C est dans B et ainsi de suite.
-A
--B
---C
----...Z
Des indices sur la façon de le faire de manière automatisée?
mkdir -p
".)Réponses:
Avec
mkdir
,printf
et l'expansion de l'accolade de bash:{A..Z}
se développe enA B ... Z
,printf "%s/"
affiche les arguments avec un/
après eux, donc je reçoisA/B/...Z/
mkdir -p
crée leA/B/.../Z
répertoire avec tous les répertoires parents à créer.la source
-p
dans lamkdir
commande.Au niveau très simple, vous pouvez utiliser l'
{A..Z}
expansion pour générer toute la lettre, puis créer et saisir de manière itérative chacune:Comme vous pouvez le voir dans ma sortie d'invite, vous avez maintenant un répertoire complètement enchaîné.
Cependant, si les noms de répertoire réels sont différents de l'alphabet, vous devrez en quelque sorte fournir la liste des noms de répertoire, peut-être via un fichier, sur lequel vous répétez et répétez le même processus. Fondamentalement, cela
la source
for d in {A..Z}; do mkdir "$d"; cd "$d"; for i in {1..100}; do mkdir "${d}${i}" ;done ; done
for d in {A..Z}; do mkdir "$d"; cd "$d"; mkdir "$d"{1..100}; done
tree
, je ne sais pas comment résoudre ce problème, mais je pense que ce n'est peut-être même pastree
le problème, mais plutôt l'ordre de tri du shell. Je suggère de poser une question réelle à ce sujet ici ou mieux encore sur unix.stackexchange.comMême si la
printf
voie de muru est imbattable, j'aime personnellementjot
ce genre de chose.jot
n'est pas installé par défaut dans Ubuntu. Leathena-jot
package le fournit. L'une ou l'autre de ces commandes fonctionne:Vraiment, toute commande qui génère la séquence de lettres et les joint avec des barres obliques facilitera cela, car sa sortie peut ensuite être transmise
mkdir -p
soit par substitution de commande (comme dans la réponse de muru ) soit en utilisantxargs
. Voici quelques exemples utilisant quelques outils etxargs
qui ne nécessitent pas l'installation de logiciels, sauf peut-être sur des systèmes très minimaux ou Ubuntu Core:Old versions d' Ubuntu viennent avec Python 2 au lieu de Python 3. Pour cela, il suffit de changer
python3
pourpython
faire ce dernier travail de commande, si vous voulez vraiment faire cela avec Python.De même, la manière courte et simple de muru peut alternativement s'écrire:
La fin
/
, dans le chemin du répertoiremkdir -p
est invité à créer, ne pose aucun problème et est sans doute préférable d'un point de vue stylistique. Mais c'est bien de l'omettre, comme le font les autres exemples de cette réponse.la source