在shell脚本中重新排序文件

时间:2016-04-02 08:31:42

标签: bash shell sh

我的系统文件格式如下

image0.jpg
image1.jpg
image2.jpg
image3.jpg
  .
  .

  .
  .
  .
image10.jpg
image11.jpg

我可以使用下面的脚本

订购文件
for i in *.jpg; do
    new=$(printf "xome%04d.jpg" "$a") #04 pad to length of 4
        mv -- "$i" "$new"
        let a=a+1
done

但是会发生什么呢?它按照此顺序获取文件,如image0.jpg,image10.jpg,image1.jpg,image11.jpg,image2.jpg..............

如何使用shell脚本获取序列

1 个答案:

答案 0 :(得分:0)

试试这个:

for i in {1..11}; do
    printf -v newfile "xome%04d.jpg" "$i"
    [ -f "image${i}" ] && mv "image${i}.jpg" "$newfile"
done

-v选项将printf结果存储在变量newfile中。

[ -f "image${i}" ]在尝试重命名之前测试文件是否存在。