Esto es lo que haría (puede haber formas más eficientes de automatizar esto, pero este es un truco rápido que debería lograr lo que necesitas). Espero haber entendido tu pregunta correctamente.
Para obtener una lista de todos los directorios (y sus subdirectorios) dentro de un directorio existente:
Abra Terminal y navegue hasta la carpeta existente que contiene la estructura que le gustaría duplicar (si no está familiarizado con Terminal, me complace ofrecerle una guía más específica sobre cómo hacerlo. Básicamente, si piensa en Terminal como Finder, la carpeta predeterminada que está "viendo" cuando abre Terminal es su carpeta de usuario. Desde allí, puede escribir pwd
para ver dónde está, ls
para ver una lista de todo lo que hay en el directorio actual, cd [folder name]
para moverse a una carpeta en el directorio, y luego cd ..
para volver a subir un nivel al directorio principal).
Escriba el siguiente comando:
find . -type d
Esto mostrará una lista de todos los directorios contenidos en el directorio actual , así como cada uno de sus subdirectorios (es decir, no dejará de buscar hasta que no haya más subdirectorios para ingresar).
La lista tendrá entradas que se parecerán a esto:
./directory1
./directory1/subdirectory1
./directory2
./directory2/sub2/sub3/sub4
Necesitamos limpiar el formato un poco antes de poder usar este texto.
Para limpiar el texto para que pueda utilizarse para recrear la estructura de esa carpeta:
Copie esta lista en cualquier editor de texto plano (no Microsoft Word); Yo uso TextWrangler pero TextEdit viene con su computadora. Usando la función de buscar y reemplazar, elimine cada instancia de ./
(deje el cuadro "reemplazar con" en blanco y presione reemplazar todo). Esto eliminará todos los puntos y barras iniciales, pero conservará las barras que indican subdirectorios.
También, elimine todas las líneas nuevas (es decir, el texto puede ajustarse en varias líneas, pero no debería haber párrafos nuevos explícitos allí). El ejemplo anterior ahora se verá como:
directory1 directory1/subdirectory1 directory2 directory2/sub2/sub3/sub4
Para crear un número arbitrario de carpetas nuevas con un solo comando:
Nota: También puedes realizar este paso utilizando nombres de carpetas de una fuente diferente. Me confundió un poco por cuál era la fuente de los nombres de las carpetas en tu pregunta
Ahora debería tener una lista de carpetas / subcarpetas que están todas en una línea (aunque puede incluirse en varias líneas cuando se representa en su editor de texto), y no tiene puntuación *. Copia todo este texto a tu portapapeles. Regrese a la Terminal y use cd [folder]
, cd ..
, ls
y pwd
para navegar a la carpeta de destino donde desea recrear la estructura de la carpeta, como se describe anteriormente.
Una vez que estés en la carpeta correcta, escribe:
mkdir -p
y luego comando v , y pulsa enter. Asegúrese de que haya un espacio (y nada más) entre mkdir -p
y el primer nombre de directorio, y un espacio entre cada nombre de directorio posterior.
Sé que las personas tienen distintos niveles de familiaridad con UNIX y el entorno de Terminal Server, por lo que si esto es confuso, no dude en comentar qué pasos necesitan más aclaraciones.
* Tenga en cuenta que si alguno de los nombres de directorio que pega en la Terminal tiene espacios o caracteres no alfanuméricos, como (./'!?:_)
, etc., debe evitarlos o no funcionará. Es decir, para cada espacio u otro carácter extraño, debe poner un \
directamente delante de él (observe la diferencia entre \
y /
). Entonces music/the beatles
se convierte en music/the\ beatles
. También puede usar buscar y reemplazar para esto.