Создать несколько папок одновременно linux

Is there a way to create multiple directories at once with mkdir?

If I wanted to create multiple directories (on the same level) and then feed it a comma seperated list of directory names (or something to that effect)?

8 Answers 8

Short answer

mkdir takes multiple arguments, simply run

You can use lists to create directories and it can get pretty wild.

Some examples to get people thinking about it:

mkdir sa mkdir -p sa/sax mkdir 12345 mkdir mkdir test mkdir -p `date '+%y%m%d'`/ mkdir -p $USER/
  1. 50 directories from sa1 through sa50
  2. same but each of the directories will hold 50 times sax1 through sax50 (-p will create parent directories if they do not exist.
  3. 26 directories from a12345 through z12345
  4. comma separated list makes dirs 1, 2 and 3.
  5. 10 directories from test01 through test10 .
  6. same as 4 but with the current date as a directory and 1,2,3 in it.
  7. same as 4 but with the current user as a directory and 1,2,3 in it.

So, if I understood it correctly and you want to create some directories, and within them new directories, then you could do this:

and get sa1, sa2. sa10 and within each dirs 1, 2 and 3.

I agree with @gniourf_gniourf… there are no usages of regular expressions in your answer. Did you mean to say something else, or to provide a different example?

It is worth mentioning that brace expansion in not defined in the POSIX shell: pubs.opengroup.org/onlinepubs/9699919799/utilities/… For example it will not work in dash which is the default /bin/sh on Ubuntu.

This answer depends on the shell doing expansion of your input before providing that input as arguments to mkdir. It’s much more accurate to just say that mkdir can create multiple dirs with multiple arguments and then talk about how a given shell can make that easier.

If I try to do something like mkdir sa$(seq 0.1 0.1 1) , all it does is create one directory named sa0.1 and the rest 0.2, 0.3, . 1. How can I get decimal brace expansion without writing the entire list?

It’s very simple, lets you want to create a directory structure such as:

Websites/ static/ cs js templates/ html and xhtml 

You can do it in a single command like this:

mkdir -p Website/,templates/html\ and\ xhtml> 

Be careful to escape the spaces in your directory names.

Make a list of the names for your desired directories using line breaks instead of commas as a separator. Save that list.

You should now have all the directories named in your list.

Yes, that will work, however , with a caveat — the directory names have to be one whole string. If one line is spaced dir , then it will create two dirs , spaced and `dir.

Читайте также:  Acer aspire switch 10e linux

Yeah — you can’t even successfully do any kind of escaping for the spaces, either — junk\ dir in the list file gives two directories, junk\ and dir . Gave me a panic when I saw a \ in a directory name.

This can be combined with the -p flag mentioned in other answers. If so, the list file doesn’t have to include parent directories as their own lines, they will be detected and made automatically.

Make sure the ‘list’ file has no file ending. list.txt will result in the creation of the directory list.txt in the location of the file. And those are backticks, not single quotes: `cat list` not ‘cat list’.

Something like this? (thanks to muru for the printf tip)

printf '%s' 'foo,bar,baz' | xargs -d, mkdir 
$ ls $ printf '%s' 'foo,bar,baz' | xargs -d, mkdir $ ls bar baz foo $ 

You can wrap it into a function for ease of use:

$ ls $ mkdir_cs 'foo,bar,baz' $ ls bar baz foo $ 

So you want comma separated list of directory names ? That can be done.

Shell + coreutils

Since everybody is posting oneliners, here’s mine as well ( mkdir + parameter substitution plus + shell redirection ).

DIR:/testdir skolodya@ubuntu:$ ls DIR:/testdir skolodya@ubuntu:$ mkdir $( tr '[,\n]' ' ' < /home/xieerqi/dirList.txt ) DIR:/testdir skolodya@ubuntu:$ ls dirFive/ dirfour/ dirone/ dirthree/ dirtwo/ 

AWK is a text processing language, but it has very nice system() function which will call the default shell , and run command[s] enclosed in parenthesis ( which must be a string).

DIR:/xieerqi skolodya@ubuntu:$ awk -F ',' '' dirList.txt DIR:/xieerqi skolodya@ubuntu:$ ls -ld dir* -rw-rw-r-- 1 xieerqi xieerqi 23 Feb 9 11:41 dirList.txt drwxrwxr-x 2 xieerqi xieerqi 4096 Feb 9 11:42 dirone/ drwxrwxr-x 2 xieerqi xieerqi 4096 Feb 9 11:42 dirthree/ drwxrwxr-x 2 xieerqi xieerqi 4096 Feb 9 11:42 dirtwo/ DIR:/xieerqi skolodya@ubuntu:$ cat dirList.txt dirone,dirtwo,dirthree 

Or you could remove , with gsub() function, and call system("mkdir "$0) but that may be a problem if you want to create directories with spaces in their name

Pythonic way of doing the same , would be to read each line, get rid of trailing \n , shove everything into one list, and iterate over the list items and create dirs per list item. Note that in the example bellow, /home/xieerqi/dirList.txt is the full path given to my file, and we make up full path of each new directory by joining string /home/username/ and the dir name read from list. Substitute your own values as necessary

DIR:/testdir skolodya@ubuntu:$ ls DIR:/testdir skolodya@ubuntu:$ /home/xieerqi/makeDirs.py DIR:/testdir skolodya@ubuntu:$ ls dirFive/ dirfour/ dirone/ dirthree/ dirtwo/ DIR:/testdir skolodya@ubuntu:$ cat /home/xieerqi/makeDirs.py #!/usr/bin/env python import os with open("/home/xieerqi/dirList.txt") as file: for line in file: for directory in line.strip().rsplit(','): path = '/home/xieerqi/testdir/' + directory os.makedirs(path) 

Источник

Как создавать каталоги в Linux (команда mkdir)

В системах Linux вы можете создавать новые каталоги либо из командной строки, либо с помощью файлового менеджера вашего рабочего стола. Команда, позволяющая создавать каталоги (также известные как папки), — это mkdir .

В этом руководстве рассматриваются основы использования команды mkdir , включая повседневные примеры.

Синтаксис команды Linux mkdir

Синтаксис команды mkdir следующий:

Команда принимает в качестве аргументов одно или несколько имен каталогов.

Как создать новый каталог

Чтобы создать каталог в Linux, передайте имя каталога в качестве аргумента команды mkdir . Например, чтобы создать новый каталог newdir вы должны выполнить следующую команду:

Вы можете убедиться, что каталог был создан, перечислив его содержимое с помощью команды ls :

drwxrwxr-x 2 username username 4096 Jan 20 03:39 newdir 

При указании только имени каталога без полного пути он создается в текущем рабочем каталоге.

Текущий рабочий каталог — это каталог, из которого вы запускаете команды. Чтобы изменить текущий рабочий каталог, используйте команду cd .

Чтобы создать каталог в другом месте, вам необходимо указать абсолютный или относительный путь к файлу родительского каталога. Например, чтобы создать новый каталог в каталоге /tmp вы должны ввести:

Если вы попытаетесь создать каталог в родительском каталоге, в котором у пользователя недостаточно прав, вы получите сообщение об ошибке Permission denied :

mkdir: cannot create directory '/root/newdir': Permission denied 

Параметр -v ( --verbose ) указывает mkdir печатать сообщение для каждого созданного каталога.

Как создать родительские каталоги

Родительский каталог — это каталог, который находится над другим каталогом в дереве каталогов. Чтобы создать родительские каталоги, используйте параметр -p .

Допустим, вы хотите создать каталог /home/linuxize/Music/Rock/Gothic :

mkdir /home/linuxize/Music/Rock/Gothic

Если какой-либо из родительских каталогов не существует, вы получите сообщение об ошибке, как показано ниже:

mkdir: cannot create directory '/home/linuxize/Music/Rock/Gothic': No such file or directory 

Вместо того, чтобы создавать недостающие родительские каталоги один за другим, вызовите команду mkdir с параметром -p :

mkdir -p /home/linuxize/Music/Rock/Gothic

Когда используется опция -p , команда создает каталог, только если он не существует.

Если вы попытаетесь создать каталог, который уже существует, а параметр -p не mkdir , mkdir выведет сообщение об ошибке File exists :

mkdir: cannot create directory 'newdir': File exists 

Как установить разрешения при создании каталога

Чтобы создать каталог с определенными разрешениями, используйте параметр -m ( -mode ). Синтаксис для назначения разрешений такой же, как и для команды chmod .

В следующем примере мы создаем новый каталог с разрешениями 700 , что означает, что только пользователь, создавший каталог, сможет получить к нему доступ:

Когда опция -m не используется, вновь созданные каталоги обычно имеют права доступа 775 или 755 , в зависимости от значения umask .

Как создать несколько каталогов

Чтобы создать несколько каталогов, укажите имена каталогов в качестве аргументов команды, разделенные пробелом:

Команда mkdir также позволяет создать сложное дерево каталогов с помощью одной команды:

mkdir -p Music/,Classical/Baroque/Early>

Приведенная выше команда создает следующее дерево каталогов :

Music/ |-- Classical | `-- Baroque | `-- Early |-- Disco |-- Folk |-- Jazz | `-- Blues `-- Rock |-- Gothic |-- Progressive `-- Punk 

Выводы

Команда mkdir в Linux используется для создания новых каталогов.

Для получения дополнительной информации о mkdir посетите страницу руководства mkdir .

Если у вас есть вопросы, не стесняйтесь оставлять комментарии ниже.

Источник

Создайте сразу несколько каталогов с помощью mkdir (Linux – Ubuntu)

Мануал

Мы перечислили некоторые команды, которые позволят вам создать несколько каталогов с помощью команды mkdir.

Команды mkdir должны использоваться мудро, поскольку они могут создавать сотни каталогов в течение нескольких секунд.

Команды работают во всех Linux-средах, и они могут выполняться через файл bash или терминал.

Первой и самой простой является команда mkdir, которая использует несколько аргументов для создания каталогов.

# mkdir myfirstdirectory myseconddirecroty mythirddirectory

В приведенной выше команде аргументы используются как имена каталогов.

Вы можете добавить столько имен, сколько хотите, но если вы действительно хотите создать сотни каталогов с помощью только одной команды, то вы можете взглянуть на следующий список.

50 папок от folder1 до folder50

mkdir -p folder/folder

50 папок будут созданы следующим порядком; folder1 до folder50 (-p создаст родительские каталоги, если они не существуют.)

26 каталогов от a123 до z123

20 каталогов от test01 до test20

mkdir -p `date ‘+% y% m% d’` /

Добавляет дату в имя папки.

Добавляет текущее имя пользователя в папку.

Если у вас есть список имен папок, вы можете просто сделать:

mkdir `cat list`

Это создаст папку для каждой строки в указанном списке.

Пожалуйста, не спамьте и никого не оскорбляйте. Это поле для комментариев, а не спамбокс. Рекламные ссылки не индексируются!

  • Аудит ИБ (49)
  • Вакансии (12)
  • Закрытие уязвимостей (105)
  • Книги (27)
  • Мануал (2 306)
  • Медиа (66)
  • Мероприятия (39)
  • Мошенники (23)
  • Обзоры (820)
  • Обход запретов (34)
  • Опросы (3)
  • Скрипты (114)
  • Статьи (352)
  • Философия (114)
  • Юмор (18)

Anything in here will be replaced on browsers that support the canvas element

OpenVPN Community Edition (CE) – это проект виртуальной частной сети (VPN) с открытым исходным кодом. Он создает защищенные соединения через Интернет с помощью собственного протокола безопасности, использующего протокол SSL/TLS. Этот поддерживаемый сообществом проект OSS (Open Source Software), использующий лицензию GPL, поддерживается многими разработчиками и соавторами OpenVPN Inc. и расширенным сообществом OpenVPN. CE является бесплатным для […]

Что такое 404 Frame? Большинство инструментов для взлома веб-сайта находятся в 404 Frame. Итак, что же представляют собой команды? Вы можете отдавать команды, используя повседневный разговорный язык, поскольку разработчики не хотели выбирать очень сложную систему команд. Команды Команды “help” / “commands” показывают все команды и их назначение. Команда “set target” – это команда, которая должна […]

В этой заметке вы узнаете о блокировке IP-адресов в Nginx. Это позволяет контролировать доступ к серверу. Nginx является одним из лучших веб-сервисов на сегодняшний день. Скорость обработки запросов делает его очень популярным среди системных администраторов. Кроме того, он обладает завидной гибкостью, что позволяет использовать его во многих ситуациях. Наступает момент, когда необходимо ограничить доступ к […]

Знаете ли вы, что выполняется в ваших контейнерах? Проведите аудит своих образов, чтобы исключить пакеты, которые делают вас уязвимыми для эксплуатации Насколько хорошо вы знаете базовые образы контейнеров, в которых работают ваши службы и инструменты? Этот вопрос часто игнорируется, поскольку мы очень доверяем им. Однако для обеспечения безопасности рабочих нагрузок и базовой инфраструктуры необходимо ответить […]

Одной из важнейших задач администратора является обеспечение обновления системы и всех доступных пакетов до последних версий. Даже после добавления нод в кластер Kubernetes нам все равно необходимо управлять обновлениями. В большинстве случаев после получения обновлений (например, обновлений ядра, системного обслуживания или аппаратных изменений) необходимо перезагрузить хост, чтобы изменения были применены. Для Kubernetes это может быть […]

Источник

Оцените статью
Adblock
detector