我有一个包含 40 个子文件夹的文件夹,每个子文件夹都包含 20~21 jpg 所有名为01.jpg -> 20.jpg子文件夹被命名为Nature_Set_01到Nature_Set_40
我想将所有图片移动到一个文件夹中,名称为Nature_Set_01_01.jpg到Nature_Set_40_20.jpg或类似名称,我并不关心名称。
如果我不清楚,这是一棵树:
├── Nature_Set_01
│ ├── 01.jpg
│ ├── 02.jpg
│ ├── ...
│ └── 20.jpg
├── Nature_Set_02
│ ├── 01.jpg
│ ├── 02.jpg
│ ├── ...
│ ├── 21.jpg
├── ...
├── Nature_Set_40
│ ├── 01.jpg
│ ├── 02.jpg
│ ├── ...
│ ├── 20.jpg
我不是 bash 大师,我试图了解如何去做,但我失败了。任何人都可以帮忙吗?
在父目录中执行此脚本。
它创建目录
folder
然后遍历匹配的文件
Nature_Set_*/*.jpg
,将找到的每个文件移动到"folder/${file/\//_}"
.最后一个构造
${file/\//_}
是一种特殊形式的参数扩展,其骨架是${parameter/pattern/replacement}
。由于/
已经是构造的分隔符,如果要出现在pattern
. 因此在文件名中/
被替换为。 示例:变成._
Nature_Set_01/01.jpg
Nature_Set_01_01.jpg