这有点棘手
我有一个文件夹,这个文件夹里面有几个子文件夹,每个子文件夹包含一个自己的子文件夹(子子文件夹),我想将这些“子子文件夹”移动到原始文件夹中。
现在的情况如下:
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_”替换为文件夹名称开头的前缀(或将所有内容保留为 *)。
答案1
$ 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