Ich möchte viele Verzeichnisse mit mkdir
erstellen . Jeder Verzeichnisname besteht aus einem Präfix (einer Zeichenfolge) und einem Index (einer ganzen Zahl). Angenommen, ich möchte, dass das Präfix „s“ ist und die Indizes von 1 bis 50 reichen. Das bedeutet, dass ich Verzeichnisse mit dem Titel erstellen möchte:
s1
, s2
, … , s49
, s50
Gibt es eine Möglichkeit, dies automatisch mit mkdir
zu tun ? Vielen Dank für Ihre Zeit.
Akzeptierte Antwort:
Sie können dies mit einem Shell-Skript tun.
Reines sh – das funktioniert sogar auf Bourne-Shells vor POSIX:
n=1;
max=50;
while [ "$n" -le "$max" ]; do
mkdir "s$n"
n=`expr "$n" + 1`;
done
Wenn Sie eine große Anzahl von Verzeichnissen erstellen möchten, können Sie das Skript beschleunigen, indem Sie es auf einen einzigen Aufruf von mkdir
reduzieren sowie die Verwendung von Shell-Builtins für Tests und Arithmetik. So:
n=1
max=50
set -- # this sets [email protected] [the argv array] to an empty list.
while [ "$n" -le "$max" ]; do
set -- "[email protected]" "s$n" # this adds s$n to the end of [email protected]
n=$(( $n + 1 ));
done
mkdir "[email protected]"
Zsh, ksh93 oder bash machen dies viel einfacher, aber ich sollte darauf hinweisen, dass dies nicht in mkdir
eingebaut ist und funktioniert möglicherweise nicht in anderen Shells. In größeren Fällen kann dies auch durch Beschränkungen der Anzahl oder Gesamtgröße von Argumenten beeinflusst werden, die an einen Befehl übergeben werden können.
mkdir s{1..50}