Quiero crear directorios hal-01
en hal-30
Linux. ¿Existe un único comando que pueda hacer esto?
Respuesta1
Puede usar el siguiente comando: mkdir hal-{01..30}
(al menos si usa un shell que admita esta forma de expansiones de cadenas (bash lo hace)).
Para explicar lo que hace:
$ echo {01..30}
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
Como puede ver, {01..30}
se expandió a varios argumentos. Esto funciona si las llaves también aparecen dentro de una cadena:
$ echo hal-{01..30}
hal-01 hal-02 hal-03 hal-04 hal-05 hal-06 hal-07 hal-08 hal-09 hal-10 hal-11 hal-12 hal-13 hal-14 hal-15 hal-16 hal-17 hal-18 hal-19 hal-20 hal-21 hal-22 hal-23 hal-24 hal-25 hal-26 hal-27 hal-28 hal-29 hal-30
Ahora mkdir acepta varios argumentos y creará un directorio para cada uno. Por lo tanto, obtendrás lo que pediste si usas mkdir
en lugar de echo
.
Respuesta2
Utilice expansión de llaves, como esta:
mkdir hal-{01..30}
Respuesta3
mkdir ~/example/folder{1..30} si quieres 30
Respuesta4
También puedes usar seq(1)
para esto, por ejemplo:
mkdir $(seq --format="~/example/folder/HAL-%02.0f" 1 30)
Puede hacer otras cosas, como diferentes pasos, etc. Por alguna razón inescrutable, se calcula con flotantes (!?), el printf(3)
formato similar debe ajustarse en consecuencia. Esto funciona incluso con shells simples que no hacen expansiones extravagantes.