У меня есть папка с именем music
, внутри которой находятся все папки исполнителей. Есть ли способ создать эти папки: 1. Albums
, 2. EP
, 3. Singles
, 4. Live
во всех папках исполнителя с помощью команды?
Несомненно, выполните это в музыкальной папке, где папки художника:
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
), и затем делает желаемую (относительную) подпапку.
Можно хотеть поставить {изогнутые} фигурные скобки для этого
Ради этого аргумента мы притворимся./музыка, не существует
В Вашем базовом каталоге для./музыка мы будем использовать команду-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/