Terminal 在linux中使用终端脚本重命名图像

Terminal 在linux中使用终端脚本重命名图像,terminal,file-rename,Terminal,File Rename,在我的/home/imf/Pictures/travels文件夹中,在Fedora17linux上,我有文件IMG_2516.JPG,IMG_2519.JPG,IMG_2520.JPG,IMG_2525.JPG,IMG_2528.JPG 我想从左到右一个一个地重命名它们,这样IMG\u 2516.JPG变成01.JPG,IMG\u 2519.JPG-02.JPG,IMG\u 2520.JPG-03.JPG,IMG\u 2525.JPG-04.JPG,IMG\code> 请注意,相邻的数字可以是近

在我的
/home/imf/Pictures/travels
文件夹中,在
Fedora17
linux上,我有文件
IMG_2516.JPG
IMG_2519.JPG
IMG_2520.JPG
IMG_2525.JPG
IMG_2528.JPG

我想从左到右一个一个地重命名它们,这样
IMG\u 2516.JPG
变成
01.JPG
IMG\u 2519.JPG
-
02.JPG
IMG\u 2520.JPG
-
03.JPG
IMG\u 2525.JPG
-
04.JPG
IMG\code>

请注意,相邻的数字可以是近(如2519和2520)和远(2516和2519),但总是增加


如何编写一个终端脚本来替代例程。这些数字是给定的,例如,还有很多文件,目前我只能手动重命名它们(非常耗时)。

如果图像的位数都相同:

I=1
for F in IMG_*.JPG; do
    mv "$F" IMG_$(printf "%02d" $I).JPG
    I=$(( I + 1 ))
done
否则,

LIST=$(mktemp)
find . -maxdepth 1 -iname "*.jpg" > $LIST
sort -n -o $LIST $LIST
I=1
cat $LIST | while read F; do
    mv "$F" IMG_$(printf "%02d" $I).JPG
    I=$(( I + 1 ))
done
rm "$LIST"
第一个是指:对于每个图像,将其移动到IMG_0I.JPG,将I增加1

第二个意思是:

  • 临时归档

  • 查找目录中的所有JPG文件(而不是子目录,不区分大小写), 在临时文件中每行保存一个

  • 按数字顺序对它们进行排序(-n)并写回临时文件(-o)

  • 将文件内容发送到以下位置:

--虽然还有下一行

----存储在F中

----将具有该名称的文件移动到I,其中I用两位数字表示,并用前导零填充,前缀为IMG_u,后缀为.JPG

----增加I

你的意思是
IMG_$(printf“%02d”$I).JPG
I=$((I+1))。
NP:-)很抱歉出现此错误。