我有一个包含 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 大师,我试图了解如何去做,但我失败了。任何人都可以帮忙吗?
在父目录中执行此脚本。
mkdir folder
for file in Nature_Set_*/*.jpg; do
mv "$file" "folder/${file/\//_}"
done
它创建目录 folder
然后循环遍历匹配的文件Nature_Set_*/*.jpg
,将找到的每个文件移动到"folder/${file/\//_}"
.
最后一个构造,${file/\//_}
,是参数展开的一种特殊形式,其骨架是${parameter/pattern/replacement}
。由于/
已经是构造的定界符,如果要出现在pattern
. 因此在文件名中/
被替换_
。
例子:Nature_Set_01/01.jpg
变成Nature_Set_01_01.jpg
.
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句