Estoy tratando de hacer un árbol de directorios de la A a la Z donde el siguiente directorio está dentro del directorio actual.
Por ejemplo: B está dentro de A y C está dentro de B y así sucesivamente.
-A
--B
---C
----...Z
¿Alguna pista sobre cómo hacerlo de forma automática?
command-line
directory
Nish
fuente
fuente
mkdir -p
".)Respuestas:
Con
mkdir
,printf
y la expansión de llaves de bash:{A..Z}
se expande aA B ... Z
,printf "%s/"
imprime los argumentos con un/
después de ellos, así que obtengoA/B/...Z/
mkdir -p
crea elA/B/.../Z
directorio con cualquier directorio padre que haya que crear.fuente
-p
en elmkdir
comando.En un nivel muy simple, puede hacer uso de la
{A..Z}
expansión para generar todas las letras, luego hacer e ingresar iterativamente cada una:Como puede ver en mi mensaje de salida, ahora tiene un directorio completamente encadenado.
Sin embargo, si los nombres de directorio reales son diferentes al alfabeto, tendrá que proporcionar de alguna manera la lista de nombres de directorio, tal vez a través de un archivo, sobre el cual iterará y volverá a realizar el mismo proceso. Básicamente, esto
fuente
for d in {A..Z}; do mkdir "$d"; cd "$d"; for i in {1..100}; do mkdir "${d}${i}" ;done ; done
for d in {A..Z}; do mkdir "$d"; cd "$d"; mkdir "$d"{1..100}; done
tree
, no estoy seguro de cómo solucionarlo, pero creo que esto ni siquiera podría sertree
un problema, sino más bien el orden de clasificación de Shell. Sugeriría hacer una pregunta real sobre eso aquí o mejor aún en unix.stackexchange.comAunque el
printf
camino de Muru no puede ser mejor, personalmente me gustajot
este tipo de cosas.jot
no está instalado por defecto en Ubuntu. Elathena-jot
paquete lo proporciona. Cualquiera de estos comandos funciona:Realmente, cualquier comando que genere la secuencia de letras y las combine con barras inclinadas facilitará esto, ya que su salida se puede pasar a
mkdir -p
través de la sustitución de comandos (como en la respuesta de muru ) o usandoxargs
. Aquí hay algunos ejemplos que usan algunas herramientas yxargs
que no requieren que instales software, excepto quizás en sistemas muy mínimos o Ubuntu Core:Las versiones anteriores de Ubuntu vienen con Python 2 en lugar de Python 3. Para eso, simplemente cambie
python3
apython
para hacer que el último comando funcione, si realmente desea hacer esto con Python.Del mismo modo, la forma corta y simple de muru se puede escribir alternativamente:
El seguimiento
/
, en la ruta del directorio quemkdir -p
se le pide que cree, no es un problema y podría decirse que es preferible estilísticamente. Pero está bien omitirlo, como lo hacen los otros ejemplos en esta respuesta.fuente