So che con mkdir posso fare mkdir A B C D E F
per creare ogni directory. Come posso creare le directory AZ o 1-100 senza digitare una lettera o un numero?
So che con mkdir posso fare mkdir A B C D E F
per creare ogni directory. Come posso creare le directory AZ o 1-100 senza digitare una lettera o un numero?
Risposte:
Probabilmente è più semplice usare un for
loop:
for char in {A..Z}; do
mkdir $char
done
for num in {1..100}; do
mkdir $num
done
Tuttavia, è necessario almeno bash 3.0; altrimenti devi usare qualcosa di simileseq
La {}
sintassi è sintassi di Bash non legata al for
costrutto.
mkdir {A..Z}
è sufficiente tutto da solo.
http://www.gnu.org/software/bash/manual/bashref.html#Brace-Expansion
mkdir -p ./logs-{1..5}
Puoi anche fare combinazioni più complesse (prova queste echo
invece di mkdir
non ripulirle in seguito):
Confrontare
$ echo pre-{{F..G},{3..4},{m..n}}-post
pre-F-post pre-G-post pre-3-post pre-4-post pre-m-post pre-n-post
a
$ echo pre-{F..G}{3..4}{m..n}-post
pre-F3m-post pre-F3n-post pre-F4m-post pre-F4n-post pre-G3m-post pre-G3n-post
pre-G4m-post pre-G4n-post
Se hai Bash 4, prova
$ echo file{0001..10}
file0001 file0002 file0003 file0004 file0005 file0006 file0007 file0008 file0009
file0010
e
$ echo file{0001..10..2}
file0001 file0003 file0005 file0007 file0009
Su Linux puoi generare sequenze di cifre con il comando "seq", ma questo non esiste su tutti i sistemi Unix. Ad esempio per generare directory da 1 a 100:
mkdir `seq 1 100`
Mentre puoi certamente creare directory dalla A alla Z con i programmi di utilità shell:
seq 65 90 \
| while read foo; do printf "%b\n" `printf '\\\\x%x\n' $foo`; done \
| xargs mkdir
Probabilmente è molto meno brutto usare solo Perl:
perl -e 'foreach (ord "A"..ord "Z") { mkdir chr $_ }'
mkdir direct{1..3}
si tradurrà in mkdir direct1 direct2 direct3
e così via. Lo stesso per{a..z}
mkdir {A..Z} mkdir {0..100} mkdir test_ {A..Z} e così via.