Ich möchte unter Linux Verzeichnisse erstellen hal-01
. hal-30
Gibt es einen einzelnen Befehl, der dies erledigt?
Antwort1
Sie können den folgenden Befehl verwenden: mkdir hal-{01..30}
(zumindest wenn Sie eine Shell verwenden, die diese Form der Zeichenfolgenerweiterung unterstützt (Bash tut dies)).
So erklären Sie, was es tut:
$ echo {01..30}
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
Wie Sie sehen, {01..30}
wurde es auf eine Reihe von Argumenten erweitert. Dies funktioniert, wenn Ihre geschweiften Klammern auch innerhalb eines Strings vorkommen:
$ echo hal-{01..30}
hal-01 hal-02 hal-03 hal-04 hal-05 hal-06 hal-07 hal-08 hal-09 hal-10 hal-11 hal-12 hal-13 hal-14 hal-15 hal-16 hal-17 hal-18 hal-19 hal-20 hal-21 hal-22 hal-23 hal-24 hal-25 hal-26 hal-27 hal-28 hal-29 hal-30
Jetzt akzeptiert mkdir eine Reihe von Argumenten und erstellt für jedes davon ein Verzeichnis. Sie erhalten also das gewünschte Ergebnis, wenn Sie mkdir
stattdessen verwenden echo
.
Antwort2
Verwenden Sie Klammererweiterungen, etwa wie folgt:
mkdir hal-{01..30}
Antwort3
mkdir ~/example/folder{1..30} wenn Sie 30 möchten
Antwort4
Sie können seq(1)
hierfür zB auch verwenden:
mkdir $(seq --format="~/example/folder/HAL-%02.0f" 1 30)
Kann andere Sachen machen, wie verschiedene Schritte und so weiter. Aus unerfindlichen Gründen rechnet es mit Floats (!?), das printf(3)
-ähnliche Format muss entsprechend angepasst werden. Das funktioniert sogar mit einfachen Shells, die keine ausgefallenen Erweiterungen machen.