如何更改有序文件的编号?
问题描述:
我有一组文件,如“surfgrid.3.h5”到“surfgrid.14.h5”,我需要它们从“surfgrid.1.h5”到“surfgrid.12.h5”。我有不同的起点相同的问题(它不总是从3开始)。如何更改有序文件的编号?
我尝试了几种类似问题的解决方案,但在这种情况下它们不起作用。还有一些测试首先将文件从10更改为14,然后3至9更改对我而言最重要的顺序。
我使用的是一台可以和Linux一起工作的机器。
由于
答
我认为下面的代码应该为你做这项工作。
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
+0
这很好。它保持文件的原始顺序。 谢谢! – Marco
答
增量变动的变量,并使用该就位在文件名的数目。
我将它们初始化为另一个目录,以避免旧名称和新名称之间的名称冲突问题。
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 以获取相关解决方案。
你想要他们在哪里订购?像打印出来一样? –
@BenjaminCommet我认为他只是想采取一组数字中有差距的文件名,并将它们重命名为连续的。 – Barmar