Comment créer des dossiers 00-99 avec une seule commande dans Ubuntu?

17

J'ai besoin de créer des dossiers de 00 à 99 (00, 01, 02, 03, etc ....) dans plusieurs centaines d'endroits. Y a-t-il une commande sur une seule ligne qui me permettra de faire cela?

jjeaton
la source

Réponses:

46

La réponse de mulaz est correcte, mais beaucoup de gens disent que seqc'est mal parce que la plupart des obus vous permettront de faire ce qui suit

mkdir {00..99}

Cependant, dans certaines anciennes versions de bash, ne sont 0-9pas rembourrées, vous devrez donc faire

mkdir 0{0..9} {10..99}
Patrick
la source
9
+1 Devrait être la réponse acceptée à mon humble avis. Non seulement ce Bash idiomatique, il ne nécessite pas l'utilisation d'un programme externe (ce qui est).
Trollhorn
1
Voilà comment cela doit être fait.
phoxis
7
Cela
17

Ça fera l'affraire?

for i in `seq -w 0 99`; do mkdir $i; done

fait une boucle pour les nombres 0-99, et "-w" définit la largeur égale (0 remplissage pour 0-9)

mulaz
la source
7
seq -w 0 99 | xargs mkdirferait aussi le travail.
Jay
11
Vous pouvez abandonner la boucle et le faire mkdir $(seq -w 0 99). Ou utilisez des backticks à la place de $(), mais je ne peux pas mettre de backticks à cause de la syntaxe du serveur.
Patrick
@Patrick: Oui, vous pouvez: mkdir `seq -w 0 99` (Je n'ai pas pu éviter l'espace supplémentaire). Voir ici , mais il semble que l'astuce d'inclure des espaces dans les délimiteurs ne fonctionne pas ici.
Keith Thompson
2
Les backticks @Patrick sont mauvais: mywiki.wooledge.org/BashFAQ/082
Andrew
@Andrew oui, je le sais, mais je préfère rester avec le style de codage de tout ce à quoi je réponds.
Patrick
2

Je sais que c'est vieux, mais ma recommandation serait:

pour i in seq -f %02g 0 99; faire mkdir $ i; terminé

le -f% 02g garantit qu'il reste au moins deux caractères, tels que 00 ou 99, et autorise toujours 3 numéros de caractères au-delà de 99, donc si vous en avez 100, il ne deviendra pas 001. Ce sera 00-99 100 au lieu de 001- 100 comme le fait -w.

Nate W
la source