¿Cómo puedo crear carpetas en carpetas en la terminal?


12

Tengo una carpeta llamada musicdonde dentro están todas las carpetas de artistas. ¿Hay una manera de crear estas carpetas: 1. Albums, 2. EP, 3. Singles, 4. Liveen todas las carpetas de artista con un comando?

Respuestas:


12

Claro, ejecute esto en la carpeta de música donde están las carpetas del artista:

for artist in */; do
   for folder in "1. Albums" "2. EP" "3. Singles" "4. Live"; do
      mkdir "$artist/$folder"
   done
done

Puede ejecutar esto en su CLI, o puede convertirlo en un script de shell al agregarlo #!/bin/shcomo la primera línea y guardarlo en un archivo. No olvide hacer que el archivo sea ejecutable.

En cuanto a lo que hace: itera sobre todos los directorios ( */) dentro del directorio actual, luego para cada uno de estos directorios, itera sobre la subcarpeta deseada (la segunda for) y luego crea la subcarpeta deseada (relativa).


1
Oh, es hermoso, esto pasará a la historia ;-)
Steve

18

Es posible que desee poner sus llaves {rizadas} para este

Por el bien de este argumento vamos a pretender ./music no existe

En su directorio base para ./music usaremos el comando -p para crear subdirectorios donde sea necesario y las llaves se usarán para crear una pequeña matriz

El comando -pes corto para los padres, si es más fácil de recordar puede usar --parenten su lugar

mkdir -p ./music/{"1. Albums","2. EP","3. Singles","4. Live"}

Si desea jugar con esto, puede, por ejemplo

mkdir -p ./folder/prefix{a{1/only,2,3},b,c}suffix/more{z,y,x}

Tiene expresiones anidadas, puede insertar las llaves en el medio de una cadena y también puede permitir que el subdirectorio haga lo mismo, y puede ser específico con sus subdirectorios para una matriz particular

Le sugiero que cree un archivo en algún lugar donde pueda hacer sus propias plantillas con dichos comandos y darles descripciones

Visite esta página para obtener más información https://www.linuxjournal.com/content/bash-brace-expansion y https://www.linux.com/tutorials/all-about-curly-braces-bash/


55
Personalmente, me gusta más esta respuesta, porque no necesita que pienses como programador. Raramente uso el método de llaves, pero es mucho más elegante.
jawtheshark

66
OP quiere que el 4 subdirectorio se coloque dentro de cada subdirectorio music, por lo que el mkdir./music/*/{"1. Albums","2. EP","3. Singles","4. Live"}
argumento

1
FYI, -pes la forma abreviada de --parent.
Amedee Van Gasse
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.