Если бы я хотел создать несколько каталогов (на одном уровне), а затем передать ему список имен каталогов через запятую (или что-то в этом роде)?
command-line
directory
coreutils
mkdir
BGroat
источник
источник
man mkdir
....man
команду и ее имя.man mkdir
«вид» предполагает возможность создания нескольких каталогов одновременно, конкретно не упоминается, ни как это сделать....
после[DIRECTORY]
, означая, что аргумент может быть повторен. ТакDIRECTORY(ies)
относится ко всем переданнымDIRECTORY
аргументам. Однако в комментариях «RTFM» иногда забывают, что есть нотация для изучения.Ответы:
Краткий ответ
mkdir
принимает несколько аргументов, просто запуститеисточник
Вы можете использовать списки для создания каталогов, и это может быть довольно диким.
Несколько примеров, чтобы заставить людей задуматься об этом:
test01
сквозногоtest10
.Итак, если я правильно понял, и вы хотите создать несколько каталогов, а внутри них новые каталоги, то вы можете сделать это:
и получите sa1, sa2, ..., sa10 и в каждом dirs 1, 2 и 3.
источник
dash
котором по умолчанию используется/bin/sh
Ubuntu.mkdir sa$(seq 0.1 0.1 1)
, все, что он делает, это создает один каталог с именем sa0.1, а остальные 0.2, 0.3, ..., 1. Как я могу получить десятичную скобку без записи всего списка?Это очень просто, позволяет вам создать структуру каталогов, такую как:
Вы можете сделать это одной командой:
Будьте осторожны, чтобы не войти в любые пробелы
источник
Составьте список имен для желаемых каталогов, используя разрывы строк вместо запятых в качестве разделителя. Сохраните этот список.
Теперь у вас должны быть все каталоги, названные в вашем списке.
источник
spaced dir
, то она создаст два dirsspaced
и `dir.junk\ dir
вlist
файле есть две директории,junk\
иdir
. Дали мне панику, когда я увидел\
в названии каталога.-p
флагом, упомянутым в других ответах. Если это так,list
файл не должен включать родительские каталоги в качестве своих собственных строк, они будут обнаружены и созданы автоматически.Что-то вроде этого? (спасибо Муру за
printf
подсказку)Вы можете включить его в функцию для удобства использования:
источник
printf "%s" "$1" | xargs -d, mkdir
должно быть достаточно.Итак, вы хотите разделить запятыми список имен каталогов? Это можно сделать.
Shell + coreutils
Так как все публикуют oneliners, вот и мой (mkdir + подстановка параметров плюс + перенаправление оболочки).
AWK
AWK - это язык обработки текста, но у него есть очень хорошая
system()
функция, которая будет вызывать оболочку по умолчанию и запускать команду [s], заключенную в круглые скобки (которая должна быть строкой).Или вы можете удалить
,
с помощьюgsub()
функции и вызвать,system("mkdir "$0)
но это может быть проблемой, если вы хотите создать каталоги с пробелами в их именипитон
Pythonic способ сделать то же самое, состоял бы в том, чтобы прочитать каждую строку, избавиться от конечного
\n
, сложить все в один список, итерировать по элементам списка и создавать dirs для каждого элемента списка. Обратите внимание, что в приведенном ниже примере/home/xieerqi/dirList.txt
указан полный путь к моему файлу, и мы создаем полный путь к каждому новому каталогу, объединяя строку/home/username/
и имя dir, прочитанное из списка. Подставьте свои собственные ценности по мере необходимостиисточник
dir{1..1000}
. Скажем, вы хотите создать каталог по имени пользователя, по проекту или по географическому местоположению, например по городуКоманда mkdir принимает несколько аргументов, просто запустите, как показано ниже
Если вы хотите создать несколько подкаталогов, вы можете передать эти аргументы в {}, как показано ниже (используйте только запятые для разделения аргумента без пробелов).
источник