Sé que con mkdir puedo hacer mkdir A B C D E F
para crear cada directorio. ¿Cómo creo directorios A-Z o 1-100 sin escribir cada letra o número?
Probablemente sea más fácil usar un bucle for
:
for char in {A..Z}; do
mkdir $char
done
for num in {1..100}; do
mkdir $num
done
Sin embargo, necesita al menos bash 3.0; de lo contrario, debe usar algo como seq
La sintaxis {}
Es una sintaxis Bash no vinculada a la construcción for
.
mkdir {A..Z}
es suficiente por sí solo.
http://www.gnu.org/software/bash/manual/bashref.html#Brace-Expansion
También puede hacer combinaciones más complejas (intente con echo
en lugar de mkdir
para que no haya limpieza después):
Comparar
$ 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
Si tienes Bash 4, prueba
$ echo file{0001..10}
file0001 file0002 file0003 file0004 file0005 file0006 file0007 file0008 file0009
file0010
y
$ echo file{0001..10..2}
file0001 file0003 file0005 file0007 file0009
En Linux puede generar secuencias de dígitos con el comando "seq", pero esto no existe en todos los sistemas Unix. Por ejemplo, para generar directorios del 1 al 100:
mkdir `seq 1 100`
Si bien puede crear directorios de la A a la Z con utilidades de Shell:
seq 65 90 \
| while read foo; do printf "%b\n" `printf '\\\\x%x\n' $foo`; done \
| xargs mkdir
Probablemente sea mucho menos feo usar Perl:
Perl -e 'foreach (ord "A"..ord "Z") { mkdir chr $_ }'