Wie erstelle ich 100 Unterverzeichnisse mit einem Bash-Skript?

14

Ich versuche, mit einem Bash-Skript 100 verschiedene Unterverzeichnisse in bestimmten Verzeichnissen zu erstellen.

Ich beginne mit einer einfachen forSchleife for f in $FILES;do mkdir f done, aber sie funktioniert nicht.

Um klar zu machen, was ich tun möchte: Ich versuche, 100 verschiedene Unterverzeichnisse in aktuellen Verzeichnissen zu erhalten (hier verwende ich home='pwd'). Zum Beispiel im Verzeichnis /home/paul/main_directory/.

Und hier möchte ich 100 Verzeichnisse mit einem Index von 1 bis 100 erstellen, so:

subdirectory_1
subdirectory_2
subdirectory_3
subdirectory_4
.
.
.
subdirectory_100
Pavol Namer
quelle

Antworten:

19

Um Ihre Frage mit Ihrer vorgeschlagenen forSchleife zu beantworten, funktioniert auch der von steeldriver erwähnte Klammerausdruck:

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

So beantworten Sie Ihre aktualisierte Frage:

Beide - die Antwort von steeldriver und die von mir sind als Einzeiler gedacht.

Wenn Sie dies in einem Bash-Skript verwenden möchten, schreiben Sie es wahrscheinlich wie folgt:

#!/bin/bash
for i in {1..100}
do
    mkdir subdirectory_$i
done
rkn
quelle
Entschuldigung, ich möchte Ihre Antwort nicht bearbeiten, ich möchte sie nur kommentieren ... autsch ...
Pavol Namer
Vielen Dank für Ihre schnelle Antwort, jetzt habe ich. Vielen Dank, das spart mir viel Zeit :)
Pavol Namer
1
Eine Alternative für Fälle, in denen Sie keine vollständige BASH haben, sondern nur ein / bin / sh, können Sie seqstattdessen verwenden: for i in $(seq 1 100); do mkdir dir_$i; done
Daniel Llewellyn
Erstellt ein Verzeichnis '{1..3}', wenn Sie dies dreimal versuchen. Irgendwelche Hinweise, was schief gelaufen sein könnte?
Soufrk
40

Der einfachste Weg ist wahrscheinlich die Verwendung der Klammererweiterung

mkdir subdirectory_{1..100}
Stahlfahrer
quelle
8

Um der eindrucksvollen Antwort von steeldriver noch etwas hinzuzufügen:

Sie können Verzeichnisse erstellen, die "richtig" sortiert sind, indem Sie mit Nullen auffüllen.

mkdir subdirectory_{001..100}

(Wenn Ihnen diese Antwort gefällt, stimmen Sie bitte der Antwort von steeldriver zu. Ich kann noch keinen Kommentar abgeben oder hätte dies getan.)

MDeBusk
quelle
Erstellt ein Unterverzeichnis mit dem Namen "Unterverzeichnis_ {001..100}". Irgendwelche Hinweise darauf, was schief gelaufen sein könnte.
soufrk
Keine Ahnung. Es funktioniert gut für mich hier. Benutzt du Bash?
MDeBusk