Usando llaves (llaves) para crear la estructura de carpetas con `mkdir -p`


16

Como man mkdirestados

   -p, --parents
          no error if existing, make parent directories as needed

Cuando ejecuté este comando

mkdir -p work/{F1,F2,F3}/{temp1,temp2}

Se crea una estructura de carpetas como esta workcarpeta principal a continuación F1, F2, F3carpetas secundarias y temp1y temp2carpetas menor de carpeta de tres padres F1, F2, F3.

   work
     -F1
       -temp1
       -temp2
     -F2
       -temp1
       -temp2
     -F3
       -temp1
       -temp2

Ahora el problema es que quiero crear temp1, temp2carpetas sólo bajo F1no bajo F2y F3, pero estoy confundido sobre cómo puedo escribir un comando para hacer lo que quiera.


@Caleb: lo siento, no sabía que ambos estábamos editando al mismo tiempo, parece que SE no implementa la fusión de revisiones: - /
Stéphane Gimenez

@Stephane: No te preocupes. He hecho muchas ediciones y es bastante raro que dos ediciones principales se vean así. ¡Gracias por contribuir!
Caleb

Respuestas:


25

Tal vez esto es lo que estás buscando?

 mkdir -p work/{F1/{temp1,temp2},F2,F3}

Oye, me preguntaba recientemente si las cosas podrían hacerse tan simple como eso. ¡Gracias!
rozcietrzewiacz

2

Se puede encontrar una muy buena descripción de la expansión de llaves (con ejemplos) en la subsección Brace Expansiondel manual de bash ( man bashpresione /para iniciar la búsqueda y buscar Brace Expansion).


¡Gracias, su respuesta me llevó a esta gran guía! Solo necesitaba saber que se llama "Expansión de Brace", así que sabía qué buscar en Google. linuxcommand.org/lc3_lts0080.php Extracto: "Quizás la expansión más extraña se llama expansión de llaves. Con ella, puede crear múltiples cadenas de texto a partir de un patrón que contiene llaves. Aquí hay un ejemplo: [me@linuxbox me]$ echo Front-{A,B,C}-Back Front-A-Back Front-B-Back Front-C-Back"
Rock Lee

0
mkdir -p work/F{1..3} work/F1/temp{1,2}

Esto crea primero worklos tres subdirectorios antes de crear los directorios de nivel inferior de work/F1. Es fácil de leer y entender.

O, si es absolutamente necesario combinar todo en una sola expresión de monstruo (no hay absolutamente ninguna necesidad de hacerlo, ya que es difícil de leer y mantener):

mkdir -p work/F{1/temp{1,2},2,3}
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.