简体   繁体   English

如何在终端命令中将多个文件以数字顺序1、2或3位重命名为4位?

[英]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

refer 参考

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM