Używanie nawiasów klamrowych (nawiasów klamrowych) do tworzenia struktury folderów za pomocą `mkdir -p`

16

Jak man mkdirstwierdza

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

Kiedy uruchomiłem to polecenie

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

Tworzy strukturę katalogów jak ten workrodzic folderu wtedy F1, F2, F3foldery i dziecko temp1i temp2foldery dziecko poniżej trzeciego folderu nadrzędnego F1, F2, F3.

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

Teraz problem jest, że chcę stworzyć temp1, temp2foldery tylko pod F1nie pod F2a F3, ale jestem mylić, w jaki sposób można napisać polecenie, aby robić to, co chcę.

mr_eclair
źródło
@Caleb: przepraszam, nie wiedziałem, że oboje edytujemy w tym samym czasie, wygląda na to, że scalanie wersji nie jest realizowane przez SE: - /
Stéphane Gimenez
@Stephane: Bez obaw. Dokonałem wielu zmian i dość rzadko zdarza się, że dwie główne zmiany są tak blokowane. Dziękujemy za pomoc!
Caleb

Odpowiedzi:

25

Może tego właśnie szukasz?

 mkdir -p work/{F1/{temp1,temp2},F2,F3}
Stéphane Gimenez
źródło
Hej, zastanawiałem się ostatnio, czy można to zrobić tak prosto. Dzięki!
rozcietrzewiacz
2

Bardzo dobry opis rozszerzenia nawiasu (z przykładami) można znaleźć w podrozdziale Brace Expansionpodręcznika bash ( man bashnaciśnij, /aby rozpocząć wyszukiwanie i wyszukiwanie Brace Expansion).

rozcietrzewiacz
źródło
Dziękuję, twoja odpowiedź zaprowadziła mnie do tego wspaniałego przewodnika! Musiałem tylko wiedzieć, że nazywa się to „Brace Expansion”, więc wiedziałem, co google. linuxcommand.org/lc3_lts0080.php Fragment: „Być może najdziwniejsze rozszerzenie nazywa się rozszerzaniem nawiasów klamrowych. Za jego pomocą możesz tworzyć wiele ciągów tekstowych ze wzoru zawierającego nawiasy klamrowe. Oto przykład: [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}

To najpierw tworzy worki trzy podkatalogi przed utworzeniem katalogów niższego poziomu work/F1. Jest łatwy do odczytania i zrozumienia.

Lub, jeśli absolutnie potrzebujesz połączyć wszystko w jedno wyrażenie potwora (absolutnie nie ma takiej potrzeby, ponieważ trudno jest je przeczytać i utrzymać):

mkdir -p work/F{1/temp{1,2},2,3}
Kusalananda
źródło