" particles_00090.png" " particles_00091.png" ...." particles_00131.png"
到
"颗粒-00000.png" "颗粒-00001.png" ...."粒子-00041.png"
基本上,我希望将值 90 减去文件后缀,同时保持数值的数量(在上面的情况下我们有5个零)并将下划线转换为破折号。
答案 0 :(得分:2)
不,但您可以编写算法脚本:
for fn_orig in particles_*
do
# split the file name up into 3 parts
extension="${fn_orig##*.}"
filename="${fn_orig%.*}"
number="${filename#particles_}"
# do the desired math
subtract=$(expr $number + 0 - 90 )
# reassemble to the desired format
fn_new=$(printf "particles-%05d.%s" $subtract $extension)
# output the command, in case tweaking is wanted
# just remove the echo to actually do it
echo mv "$fn_orig" "$fn_new"
done
示例运行:
$ ls
particles_00090.png particles_00091.png particles_00131.png command.sh
$ ./command.sh
mv particles_00090.png particles-00000.png
mv particles_00091.png particles-00001.png
mv particles_00131.png particles-00041.png
答案 1 :(得分:1)
这里的东西不是很好且可扩展,但它适用于 bash (它分两步完成:需要替换最后2位数的文件和需要最后3位数的文件):
for f in {90..99}; do mv particles_000$f particles_000$((f-90)) ; done
for f in {100..131}; do mv particles_00$f particles_00$((f-90)) ; done