Использование фигурных скобок (фигурных скобок) для создания структуры папок с помощью `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, но я путать о том, как я могу написать команду , чтобы делать то , что я хочу.

mr_eclair
источник
@Caleb: извините, я не знал, что мы оба редактировали одновременно, похоже, что слияние ревизий не реализовано в SE: - /
Stéphane Gimenez
@ Стефан: Не беспокойся. Я сделал много правок, и довольно редко два основных правок так и перекрываются. Спасибо за помощь!
Калеб

Ответы:

25

Может быть, это то, что вы ищете?

 mkdir -p work/{F1/{temp1,temp2},F2,F3}
Стефан Хименес
источник
Эй, я недавно задумался, можно ли сделать все так просто. Благодарность!
rozcietrzewiacz
2

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

rozcietrzewiacz
источник
Спасибо, ваш ответ привел меня к этому замечательному гиду! Просто нужно было знать, что это называется «Расширение скобок», чтобы я знал, что гуглить. 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}
Кусалананда
источник