#linux #directory #structure
Вопрос:
У меня проблема, у меня есть каталог /home/robert
, в котором есть подкаталоги: Dog
, Cat
, Bird
, Horse
Я хочу создать Test
и Test1
(автоматически) в каждом из этих каталогов, чтобы получить:
/home/robert/Dog/Test
/home/robert/Dog/Test1
/home/robert/Cat/Test
/home/robert/Cat/Test1
/home/robert/Bird/Test
/home/robert/Bird/Test1
/home/robert/Horse/Test
/home/robert/Horse/Test1
Можно ли это сделать, например, одной командой с регулярными выражениями, или еще лучше в текстовом файле, я ввожу:
Test
Test1
И как-то я беру названия «Тест» и «Тест1» и иду в команду, которая создаст такую структуру каталогов?
Я пытался:
mkdir /home/robert/*/Test
mkdir /home/robert/{*}/Test
mkdir /home/robert/[*]/Test
К сожалению, это не работает
Комментарии:
1. Вы могли бы попробовать что-то вроде
find /home/robert/* -type d -maxdepth 0 -print0 | xargs -0 -iDIR mkdir -p DIR/Test DIR/Test1
Ответ №1:
Спасибо! То, что вы написали выше, позвольте мне более точно посмотреть в Интернете. Благодаря этому я написал сценарий, который полностью решает мою проблему. (Вышеуказанные каталоги «Кошка, собака и т. Д. Я привел только в качестве примера), я действительно хотел добиться следующего решения:
#!/bin/bash
mkdir -- {1..300}
for dir in*; do
mkdir -- "$dir"/{documents,desktop,email};
done
Перед выполнением сценария у меня было:
$ tree my_office_users/
my_office_users/
└── script
И после запуска скрипта у меня есть от 1 до 300 папок, и в каждой из них каталоги: рабочий стол, документы и электронная почта.
И это было все!
$ tree my_office_users
my_office_users/
├── 1
│ ├── desktop
│ ├── documents
│ └── email
├── 10
│ ├── desktop
│ ├── documents
│ └── email
├── 100
│ ├── desktop
│ ├── documents
│ └── email
├── 101
│ ├── desktop
│ ├── documents
│ └── email
.
.
.
├── 99
│ ├── desktop
│ ├── documents
│ └── email
└── script
Ответ №2:
Это соответствует вашим критериям, но я не уверен, что это то, что вы хотели.
for dir in deleteme/*/;do mkdir -- "$dir"/{Test,Test1}; done
где deleteme
в вашем случае было бы /home/robert
Если это должна быть только mkdir
команда, вы можете это сделать, но она не масштабируется:
mkdir -p deleteme/{Dog/{Test1,Test2},Cat/{Test1,Test2},Bird/{Test1,Test2},Horse/{Test1,Test2}}