我有一组文件,例如“surfgrid.3.h5”到“surfgrid.14.h5”,我需要将它们从“surfgrid.1.h5”订购到“surfgrid.12.h5”。我有不同起点的相同问题(并不总是从3开始)。
我尝试了几种类似问题的解决方案,但在这种情况下它们不起作用。还有一些测试首先将文件重命名为10到14,然后是3到9改变了对我来说很重要的顺序。
我使用的是适用于Linux的机器。
由于
答案 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
对于这方面的一些解决方案。