Vorrei creare molte directory usando mkdir
. Ogni nome di directory sarà composto da un prefisso (una stringa) e un indice (un numero intero). Supponiamo che io voglia che il prefisso sia "s" e che gli indici vadano da 1 a 50. Ciò significa che vorrei creare directory intitolate:
s1
, s2
, … , s49
, s50
C'è un modo per farlo automaticamente usando mkdir
? Grazie per il tuo tempo.
Risposta accettata:
Puoi farlo con uno script di shell.
Pure sh:funzionerà anche su shell Bourne pre-POSIX:
n=1;
max=50;
while [ "$n" -le "$max" ]; do
mkdir "s$n"
n=`expr "$n" + 1`;
done
Se vuoi creare un numero elevato di directory, puoi rendere lo script più veloce riducendolo a una singola chiamata di mkdir
oltre a utilizzare i built-in della shell per i test e l'aritmetica. In questo modo:
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 o bash lo rendono molto più semplice, ma devo sottolineare che questo non è integrato in mkdir
e potrebbe non funzionare in altre shell. Per casi più grandi, può anche essere influenzato da limiti al numero o alla dimensione totale degli argomenti che possono essere passati a un comando.
mkdir s{1..50}