Quiero crear un directorio de tal manera que necesite etiquetar los directorios de a
a z
. Dentro de cada uno de estos directorios, necesito crear subdirectorios para que estén etiquetados como aa
, ab
etc.
Entonces, por ejemplo, para el directorio m
, mis subdirectorios se etiquetarán como ma
, mb
hasta mz
.
shell-script
mkdir
Ramesh
fuente
fuente
/usr/share/terminfo
con [az] y usaría esa salida. Linux es bastante escaso en ese aspecto, solía ser entradas para todos los caracteres en mayúsculas y minúsculas más los dígitos.Respuestas:
Tratar:
Bash se expandirá
XXX{a..z}
aXXXa
,XXXb
y así sucesivamente. No hay necesidad del bucle interno que tienes.Después de esto:
fuente
Entonces, con
bash
la expansión del alfabeto, esto funciona:Y si solo escribe el alfabeto una vez en la primera línea, el mismo concepto debería ser portátil para cualquier shell. Hay otras formas de llegar a la línea establecida si no desea escribirla como:
... por ejemplo, funciona en un entorno local ASCII. Por lo tanto, podría hacer
set $(seq -sP32P 97 123|dc)
o cualquier otro comando que le proporcionaría una$IFS
lista separada de los argumentos que necesita, pero, quiero decir, probablemente sea mejor usar labash
cosa o escribirla.De todos modos, creo que esa es la forma en que lo haría solo porque solo invoca
mkdir
con la frecuencia necesaria.Y solo para demostrar cómo funciona, aquí hay una pequeña salida de depuración de un conjunto más pequeño:
Como puede ver, los
for
únicos bucles una vez por índice de matriz de parámetros posicionales, que establezco aquí simplemente entregandosh
los parámetros en la invocación, y arriba conset ${positionals}
. Peroprintf
recibe la misma matriz en su lista de argumentos para cada iteración y aplica su cadena de formato a cada uno de sus argumentos, por lo que obtiene la apariencia de recursión sin ninguna recursión innecesaria.Y agregar el
done|command
flujo de transmisión de todafor
la salida de un bucle sobre la tubería de la misma maneradone >file
lo transmitiría todo en un archivo, solo abriendo y cerrando el archivo de salida una vez para toda lafor...done
construcción.fuente
A partir de aquí , terminé creando un script como este. Sin embargo, si obtengo una solución elegante, la aceptaré como respuesta.
fuente
/home/ramesh/"$x"/"$x$y"
,/home/ramesh/"$x/$x$y"
o"/home/ramesh/$x/$x$y"
- todos son equivalentes.En
Perl
:File::Path
es módulo central desde entoncesPerl 5.001
.fuente