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:-)很抱歉出现此错误。