Використання фігурних дужок (дужок) для створення структури папки з `mkdir -p`


16

Як man mkdirговориться

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

Коли я виконував цю команду

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

Вона створює структуру папок , як цей workбатьківську папку , то F1, F2, F3дочірні папки і temp1та temp2дочірні папки в три батьківської папки F1, F2,F3 .

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

Тепер проблема полягає в тому , що я хочу створити temp1, temp2папки тільки в F1не під F2і F3, але я плутати про те, як я можу написати команду , щоб робити те , що я хочу.


@Caleb: Вибачте, я не знав, що ми обидва редагували одночасно, схоже, що злиття версій не впроваджено SE: - /
Stéphane Gimenez

@Stephane: Не хвилюйтесь. Я вніс багато змін, і досить рідко виходить, що дві основні редагування накладені таким чином. Дякуємо за ваш внесок!
Калеб

Відповіді:



2

Дуже вдалий опис розширення дужок (із прикладами) можна знайти в підрозділі Brace Expansionкерівництва bash ( man bashнатисніть, /щоб почати пошук і пошук Brace Expansion).


Дякую, ваша відповідь привела мене до цього чудового путівника! Просто потрібно було знати, що це називається "Brace Expansion", тому я знав, що робити в Google. linuxcommand.org/lc3_lts0080.php Витяг: "Мабуть, найдивніше розширення називається розширенням дужок. За допомогою нього ви можете створити кілька текстових рядків із шаблону, що містить дужки. Ось приклад: [me@linuxbox me]$ echo Front-{A,B,C}-Back Front-A-Back Front-B-Back Front-C-Back"
Рок Лі

0
mkdir -p work/F{1..3} work/F1/temp{1,2}

Спершу створюються workі три підкаталоги перед створенням каталогів нижчого рівня work/F1. Це легко читати та розуміти.

Або, якщо вам абсолютно потрібно об'єднати все в один вираз монстра (робити це абсолютно не потрібно, оскільки важко читати і підтримувати):

mkdir -p work/F{1/temp{1,2},2,3}
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.