Как я могу создавать папки в папках в терминале

12

У меня есть папка с именем, musicгде внутри находятся все папки художника. Есть ли способ , чтобы создать эти папки: 1. Albums, 2. EP, 3. Singles, 4. Liveво всех художнике папок с командой?

wjandrea
источник

Ответы:

12

Конечно, выполните это в папке музыки, где папки исполнителя:

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

Вы можете выполнить это в своем CLI или сделать его сценарием оболочки, добавив #!/bin/shв качестве первой строки и сохранив его в файле. Не забудьте сделать файл исполняемым.

Что касается того, что он делает: он перебирает все каталоги ( */) в текущем каталоге, затем для каждого из этих каталогов перебирает нужную подпапку (вторую for), а затем создает нужную (относительную) подпапку.

jawtheshark
источник
1
О, это прекрасно, это войдет в историю ;-)
Стив
18

Вы можете надеть свои фигурные скобки для этого

Ради этого аргумента мы будем притворяться ./music не существует

В вашем базовом каталоге для ./music мы будем использовать команду -p для создания подкаталогов, где это необходимо, а фигурные скобки будут использоваться для создания небольшого массива

Команда -pкоротка для родителя, если ее легче запомнить, вы можете использовать --parentвместо

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

Если вы хотите поиграть с этим, вы можете, например,

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

У вас есть вложенные выражения, вы можете вставить фигурные скобки в середину строки, и вы также можете позволить подкаталогу следовать его примеру, и вы можете быть конкретны со своими подкаталогами для конкретного массива

Я предлагаю вам сделать файл где-нибудь, где вы можете сделать свои собственные шаблоны с такими командами и дать им описания

Посетите эту страницу для получения дополнительной информации https://www.linuxjournal.com/content/bash-brace-expansion и https://www.linux.com/tutorials/all-about-curly-braces-bash/

Стив
источник
5
Лично мне этот ответ нравится больше, потому что вам не нужно думать как программист. Я редко использую метод фигурных скобок, но он намного элегантнее.
Jawtheshark
6
OP хочет 4 подкаталога помещается внутри каждой самой подпапки music, поэтому правильный аргумент , чтобы mkdirбы./music/*/{"1. Albums","2. EP","3. Singles","4. Live"}
joH1
1
К вашему сведению, -pэто краткая форма --parent.
Амеди Ван Гассе