如何更改有序文件的编号?

时间:2017-05-24 15:56:18

标签: linux rename

我有一组文件,例如“surfgrid.3.h5”到“surfgrid.14.h5”,我需要将它们从“surfgrid.1.h5”订购到“surfgrid.12.h5”。我有不同起点的相同问题(并不总是从3开始)。

我尝试了几种类似问题的解决方案,但在这种情况下它们不起作用。还有一些测试首先将文件重命名为10到14,然后是3到9改变了对我来说很重要的顺序。

我使用的是适用于Linux的机器。

由于

2 个答案:

答案 0 :(得分:1)

我认为下面的代码应该为你完成工作。

Start=3
End=14
echo "\$Start = " $Start " and \$End = " $End
for i in $(seq $Start $End);

  do 
    echo " i is $i"
    j=$((i-2)) 
    echo " j is $j"
    cp surfgrid.$i.h5 surfgrid.$j.h5
  done

答案 1 :(得分:0)

增加变量并使用它代替文件名中的数字。

我最初将它们重命名为另一个目录,以避免旧名称和新名称之间的名称冲突问题。

mkdir temp
i=1
for file in surfgrid.*.h5
do
    mv "$file" "temp/surfgrid.$i.h5"
    ((i++))
done
mv temp/* .

当shell扩展通配符surfgrid.*.h5时,它按字典顺序排序,而非按数字排序,因此sufgrid.10.h5位于sufgrid.2.h5之前。见Glob with Numerical Order   对于这方面的一些解决方案。