Иногда вам может понадобиться создать вложенные каталоги в Linux с помощью одной команды. Обычно, если вы попытаетесь создать подкаталог, где родительский каталог не существует, вы получите ошибку. Поэтому разработчики и системные администраторы обычно создают сначала родительский каталог, а затем подкаталог. Но если вам нужно создать глубоко вложенный каталог, у которого много предков, это будет утомительно. В этой статье мы узнаем, как создать вложенный каталог в Linux с помощью одной команды mkdir.
Как создать вложенный каталог в Linux с помощью одной команды
Допустим, вы хотите создать вложенный каталог /foo/bar/baz, где /foo и /foo/bar не существуют, тогда вот простая команда mkdir для создания /foo, /foo/bar и /foo/bar/baz с помощью одной команды.
1 | mkdir -p /foo/bar/baz |
В приведенной выше команде необходимо указать опцию -p, за которой следует самый внутренний вложенный каталог, который необходимо создать. При этом mkdir автоматически проверит и создаст родительские каталоги, если они не существуют.
Обычно опция -p используется с mkdir в том случае, если вы хотите, чтобы он создавал каталог, только если он не существует. Но вы также можете использовать ее для создания вложенных каталогов.
В некоторых реализациях, таких как GNU, команда mkdir поддерживает опцию -parents, которая более читабельна, чем -p, но она может быть недоступна в MacOS, различных BSD и других коммерческих дистрибутивах.
На самом деле, вы даже можете создать несколько вложенных каталогов с помощью одной команды mkdir, используя регулярные выражения в имени/пути к папке.
Допустим, вы хотите создать следующую вложенную структуру папок.
1 2 3 4 5 6 7 8 9 10 | work -F1 -temp1 -temp2 -F2 -temp1 -temp2 -F3 -temp1 -temp2 |
Вы можете создать приведенную выше структуру каталогов с помощью одной команды, приведенной ниже.
1 | mkdir -p work/{F1/{temp1,temp2},F2,F3} |
Когда мы указываем несколько имен папок/подпапок в фигурных скобках, mkdir создаст отдельный каталог для каждой из них. Например, {F1/{temp1,temp2},F2,F3} создаст каталоги F1, F2 и F3. {temp1, temp2} приведет к созданию подкаталогов temp1 и temp2 для F1, F2, F3. Обратите внимание, что хотя мы не указали temp1 и temp2 для F2 и F3, они будут созданы, поскольку они входят в ту же группу, что и F1, и мы указали, что подпапки temp1 и temp2 будут созданы для F1.
Важно отметить, что расширение фигурных скобок выполняется оболочкой, благодаря функции расширения скобок, а не командой mkdir. Просто, когда вы сочетаете опцию -p с расширением скобок, это позволяет вам создавать огромные и сложные структуры каталогов всего за одну команду.