На этот вопрос уже есть ответ здесь:
Это это довольно сложно
У меня есть папка, и внутри этой папки несколько подпапок, каждая подпапка содержит одну собственную подпапку (подпапку), я хочу переместить эти подпапки в исходную папку.
Вот как это выглядит сейчас:
Archives/
│
├── Records_A/
│ └── Folder_1/
| └── Item_1.png
│
├── Records_B/
│ └── Folder_2/
| └── Item_2.png
│
├── Records_C/
│ └── Folder_3/
| └── Item_3.png
│
├── Records_D/
│ └── Folder_4/
| └── Item_4.png
│
├── Records_E/
│ └── Folder_5/
| └── Item_5.png
...
Я хочу переместить все подпапки так, чтобы это выглядело так:
Archives/
│
├── Folder_1/
│ └── Item_1.png
│
├── Folder_2/
│ └── Item_2.png
│
├── Folder_3/
│ └── Item_3.png
│
├── Folder_4/
│ └── Item_4.png
│
├── Folder_5/
│ └── Item_5.png
│
├── Records_A/
│
├── Records_B/
│
├── Records_C/
│
├── Records_D/
│
├── Records_E/
...
Есть ли способ сделать это в bash?
Я не собираюсь перемещать сюда какие-либо файлы, а только папки
Обратите внимание, что имена вложенных папок не всегда начинаются с «Record_» И имена вложенных папок не всегда начинаются с «Folder_ », Я ищу общее решение, основанное на структуре каталогов, а не на именах.
РЕДАКТИРОВАТЬ: Я нашел решение, если у кого-то такая же проблема:
mv -v ./Records_*/* ./
просто замените "Records_" любым префиксом, с которого начинаются имена папок (или просто оставьте * для всего).
$ tree
.
├── Records_A
│ └── Folder_1
│ └── Item_1.png
├── Records_B
│ └── Folder_2
│ └── Item_2.png
├── Records_C
│ └── Folder_3
│ └── Item_3.png
├── Records_D
│ └── Folder_4
│ └── Item_4.png
└── Records_E
└── Folder_5
└── Item_5.png
10 directories, 5 files
[/tmp/Archives]$ find . -mindepth 2 -maxdepth 2 -type d | xargs -I {} mv {} .
[/tmp/Archives]$ tree
.
├── Folder_1
│ └── Item_1.png
├── Folder_2
│ └── Item_2.png
├── Folder_3
│ └── Item_3.png
├── Folder_4
│ └── Item_4.png
├── Folder_5
│ └── Item_5.png
├── Records_A
├── Records_B
├── Records_C
├── Records_D
└── Records_E
10 directories, 5 files