Jak mogę tworzyć foldery w folderach w terminalu

12

Mam folder o nazwie, w musicktórej są wszystkie foldery artystów. Czy istnieje sposób, aby utworzyć te foldery: 1. Albums, 2. EP, 3. Singles, 4. Livewe wszystkich folderach artysty z polecenia?

wjandrea
źródło

Odpowiedzi:

12

Jasne, wykonaj to w folderze muzyki, w którym znajdują się foldery wykonawców:

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

Możesz to zrobić w interfejsie CLI lub uczynić z niego skrypt powłoki, dodając #!/bin/shjako pierwszy wiersz i zapisując go w pliku. Nie zapomnij, aby plik był wykonywalny.

Co do tego, co robi: iteruje wszystkie katalogi ( */) w bieżącym katalogu, a następnie dla każdego z tych katalogów, iteruje żądany podfolder (drugi for), a następnie tworzy pożądany (względny) podfolder.

szczęka
źródło
1
Och, jest pięknie, to przejdzie do historii ;-)
Steve
18

Możesz założyć {nawiasy klamrowe} do tego

Ze względu na ten argument będziemy udawać, że ./music nie istnieje

W twoim katalogu podstawowym dla ./music użyjemy polecenia -p, aby w razie potrzeby utworzyć podkatalogi, a nawiasy klamrowe zostaną użyte do utworzenia małej tablicy

Komenda -pjest skrótem od rodzica, jeśli łatwiej jest zapamiętać, możesz użyć --parentzamiast tego

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

Jeśli chcesz się tym bawić, możesz na przykład

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

Masz zagnieżdżone wyrażenia, możesz wstawiać nawiasy klamrowe na środku ciągu, a także możesz pozwolić, aby podkatalog podążał za tym przykładem, a także możesz być specyficzny dla swoich podkatalogów dla określonej tablicy

Sugeruję utworzenie pliku gdzieś, w którym można tworzyć własne szablony za pomocą takich poleceń i podawać im opisy

Odwiedź tę stronę, aby uzyskać więcej informacji https://www.linuxjournal.com/content/bash-brace-expansion i https://www.linux.com/tutorials/all-about-curly-braces-bash/

Steve
źródło
5
Osobiście bardziej podoba mi się ta odpowiedź, ponieważ nie trzeba myśleć jako programista. Rzadko stosuję metodę nawiasów klamrowych, ale jest ona znacznie bardziej elegancka.
jawtheshark,
6
OP chce, aby 4 podkatalog był umieszczony wewnątrz każdego podkatalogu music, więc poprawnym argumentem mkdirbyłoby./music/*/{"1. Albums","2. EP","3. Singles","4. Live"}
joH1 17.09.19
1
FYI, -pto krótka forma --parent.
Amedee Van Gasse,