Sé que con mkdir puedo hacer mkdir A B C D E Fpara crear cada directorio. ¿Cómo creo directorios AZ o 1-100 sin escribir cada letra o número?
Sé que con mkdir puedo hacer mkdir A B C D E Fpara crear cada directorio. ¿Cómo creo directorios AZ o 1-100 sin escribir cada letra o número?
Respuestas:
Probablemente sea más fácil usar un forbucle:
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 tienes que usar algo comoseq
La {}sintaxis es la sintaxis de Bash no vinculada a la forconstrucción.
mkdir {A..Z}
es suficiente por sí solo.
http://www.gnu.org/software/bash/manual/bashref.html#Brace-Expansion
mkdir -p ./logs-{1..5}
También puede hacer combinaciones más complejas (intente con estas en echolugar de mkdirpara 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 $_ }'
mkdir direct{1..3}resultará en mkdir direct1 direct2 direct3y así sucesivamente. Igual por{a..z}
mkdir {A..Z} mkdir {0..100} mkdir test_ {A..Z} y así sucesivamente.