Як я можу створити папки в папках у терміналі


12

У мене папка з ім'ям, musicде всередині є всі папки виконавців. Чи є спосіб , щоб створити ці папки: 1. Albums, 2. EP, 3. Singles, 4. Liveу всіх художника папок з командою?

Відповіді:


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), а потім робить потрібну (відносну) підпапку.


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
ОП хоче, щоб 4 субдір були розміщені всередині кожного піддіректа music, тому правильним аргументом mkdirбуло б./music/*/{"1. Albums","2. EP","3. Singles","4. Live"}
joH1

1
FYI, -pє короткою формою --parent.
Амедей Ван Гассе
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.