我的文件夹结构如下:
data
├───sub_data1
│ ├──12_abc.jpg
│ ├──24_abc.jpg
│ └──25_abc.jpg
│
└──sub_data2
├──123_abc.jpg
├──244_abc.jpg
└──255_abc.jpg
其中data
是根文件夹,它包含两个子文件夹sub_data1
和sub_data2
。在这些子文件夹中,我有很多格式为number_abc.jpg
的jpg文件。我想编写一个脚本将名称从number_abc.jpg
更改为number_xyz.jpg
。该脚本使用bash编写,并且具有一个参数来选择根文件夹的路径(例如data
)。我该怎么办?我找到了一些例子,但我无法适应我的情况:
#!/bin/bash
for file in *
do
# separate the file name from its extension
if [[ $file == *.* ]]; then
ext="${file##*.}"
fname="${file%.*}"
mv "$file" "${fname}_xyz.$ext"
else
mv "$file" "${file}_xyz"
fi
done
答案 0 :(得分:2)
这是完成工作的简单方法(感谢Gem Taylor的评论):
rename 's/abc/xyz/' */*
答案 1 :(得分:-1)
for f in */*; do fp=$(dirname "$f"); ff=$(basename "$f") ; mv ~/Desktop/files/$fp/$ff ~/Desktop/files/$fp/newName.jpg ; done;