Comment créer 100 sous-répertoires à l'aide d'un script Bash?

14

J'essaie de créer 100 sous-répertoires différents dans certains répertoires à l'aide d'un script Bash.

Je commence par une forboucle de base (c'est-à-dire for f in $FILES;do mkdir f done), mais cela ne fonctionne pas.

Pour être clair sur ce que je veux faire: j'essaye d'obtenir 100 sous-répertoires différents dans les répertoires actuels (ici j'utilise home='pwd'). Par exemple, dans le répertoire /home/paul/main_directory/.

Et ici, je voudrais créer 100 répertoires avec un index de 1 à 100, comme ceci:

subdirectory_1
subdirectory_2
subdirectory_3
subdirectory_4
.
.
.
subdirectory_100
Pavol Namer
la source

Réponses:

19

Pour répondre à votre question en utilisant votre forboucle suggérée - l'expression d'accolade mentionnée par Steeldriver fonctionne également:

for i in {1..100}; do mkdir subdirectory_$i; done

Pour répondre à votre question mise à jour:

Les deux - la réponse de Steeldriver et celle de moi sont toutes deux destinées à être des lignes simples.

Si vous souhaitez l'utiliser dans un script Bash, vous l'écrirez probablement comme:

#!/bin/bash
for i in {1..100}
do
    mkdir subdirectory_$i
done
rkn
la source
désolé, je ne veux pas modifier votre réponse, je veux juste le commenter ... aïe ...
Pavol Namer
Merci beaucoup, pour votre réponse très rapide, maintenant je l'ai. Merci beaucoup de fois, cela me sauve beaucoup de temps :)
Pavol Namer
1
une alternative pour les cas où vous n'avez pas un BASH complet mais juste un / bin / sh, vous pouvez utiliser à la seqplace: for i in $(seq 1 100); do mkdir dir_$i; done
Daniel Llewellyn
Crée un répertoire '{1..3}', lorsque vous essayez de faire la même chose 3 fois. Des indices sur ce qui aurait pu mal tourner?
soufrk
40

La façon la plus simple est probablement d'utiliser l' expansion de l'accolade

mkdir subdirectory_{1..100}
tournevis
la source
8

Pour ajouter un petit quelque chose à la réponse vraiment impressionnante donnée par Steeldriver:

Vous pouvez créer des répertoires qui trient "correctement" en remplissant à zéro.

mkdir subdirectory_{001..100}

(Si vous aimez cette réponse, veuillez voter pour la réponse de Steeldriver. Je ne peux pas encore commenter, ou je l'aurais fait.)

MDeBusk
la source
Crée un sous-répertoire nommé 'subdirectory_ {001..100}'. Des indices sur ce qui aurait pu mal tourner.
soufrk
Aucune idée. Cela fonctionne très bien pour moi ici. Utilisez-vous bash?
MDeBusk