Verwenden Sie geschweifte Klammern, um mit `mkdir -p` eine Ordnerstruktur zu erstellen

16

Wie man mkdirheißt es

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

Als ich diesen Befehl ausgeführt habe

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

Es erstellt eine Ordnerstruktur wie dieser workübergeordneten Ordner dann F1, F2, F3untergeordneten Ordner und temp1und temp2untergeordneten Ordner unter drei übergeordneten Ordner F1, F2, F3.

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

Das Problem ist jetzt , dass ich erstellen möchten temp1, temp2Ordner nur unter F1nicht unter F2und F3, aber ich bin verwirrt, wie ich einen Befehl schreiben kann , zu tun , was ich will.

mr_eclair
quelle
@Caleb: Entschuldigung, mir war nicht bewusst, dass wir beide zur gleichen Zeit bearbeiteten. Es scheint, dass das Zusammenführen von Revisionen von SE nicht implementiert wird: - /
Stéphane Gimenez
@Stephane: Keine Sorge. Ich habe viele Änderungen vorgenommen und es kommt ziemlich selten vor, dass zwei wichtige Änderungen auf diese Weise blockiert werden. Vielen Dank für Ihren Beitrag!
Caleb

Antworten:

25

Vielleicht ist es das, wonach du suchst?

 mkdir -p work/{F1/{temp1,temp2},F2,F3}
Stéphane Gimenez
quelle
Hey, ich habe mich neulich gefragt, ob es so einfach geht. Vielen Dank!
Rozcietrzewiacz
2

Eine sehr gute Beschreibung der Klammererweiterung (mit Beispielen) finden Sie im Unterabschnitt Brace Expansiondes Bash-Handbuchs ( man bashdrücken Sie /, um die Suche zu starten und zu suchen Brace Expansion).

rozcietrzewiacz
quelle
Vielen Dank, Ihre Antwort hat mich zu dieser tollen Anleitung geführt! Ich musste nur wissen, dass es "Brace Expansion" heißt, damit ich wusste, was ich googeln sollte. linuxcommand.org/lc3_lts0080.php Auszug: "Vielleicht wird die seltsamste Erweiterung Klammererweiterung genannt. Damit können Sie mehrere Textzeichenfolgen aus einem Muster mit Klammern erstellen. Hier ein Beispiel: [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}

Hiermit werden zunächst workdie drei Unterverzeichnisse erstellt, bevor die untergeordneten Verzeichnisse von erstellt werden work/F1. Es ist leicht zu lesen und zu verstehen.

Oder, wenn Sie unbedingt alles zu einem einzigen Monsterausdruck kombinieren müssen (dies ist absolut nicht erforderlich, da es schwierig zu lesen und zu warten ist):

mkdir -p work/F{1/temp{1,2},2,3}
Kusalananda
quelle