[英]How rename multiple files numerical order 1, 2, or 3 digit to be 4 digit in terminal command?
I want rename multiple file like this: 我想这样重命名多个文件:
qwsas_1.jpg >> 0001.jpg
2wase_2.jpg >> 0002.jpg
swaq2_3.jpg >> 0003.jpg
qweei_14.jpg >> 0004.jpg
dadaS_23.jpg >> 0005.jpg
aswee_35.jpg >> 0006.jpg
I use this command: 我使用以下命令:
a=1
for i in *.jpg; do
new=$(printf "%04d.jpg" "$a") #04 pad to length of 4
mv -- "$i" "$new"
let a=a+1
done
But result: 但是结果:
qwsas_1.jpg >> 0001.jpg
qweei_14.jpg >> 0002.jpg
2wase_2.jpg >> 0003.jpg
dadaS_23.jpg >> 0004.jpg
swaq2_3.jpg >> 0005.jpg
aswee_35.jpg >> 0006.jpg
What should I do with the code? 我应该如何处理代码?
You can sort your files by their number part before looping through and renaming them: 您可以在遍历并重命名文件之前按文件编号对文件进行排序:
a=1
while read -r filename; do
new=$(printf "%04d.jpg" "$a") #04 pad to length of 4
mv -- "$filename" "$new"
let a=a+1
done < <(ls *.jpg | sort -t_ -k2n)
Sample run: 样品运行:
renaming qwsas_1.jpg 0001.jpg
renaming 2wase_2.jpg 0002.jpg
renaming swaq2_3.jpg 0003.jpg
renaming qweei_14.jpg 0004.jpg
renaming dadaS_23.jpg 0005.jpg
renaming aswee_35.jpg 0006.jpg
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.