我在一个具有相同扩展名的文件夹中有很多文件(例如.vtk),我使用bash脚本用序列号大量重命名它们。 这是我使用的脚本:
n=0;
for file in *.vtk; do
${file} 100_${n}.vtk;
n=$((n+1));
done
脚本执行完毕后,所有文件都重命名为:
100_1.vtk
100_2.vtk
.
.
.
我的问题是我希望保持文件的排序与以前完全相同。例如,如果我有两个名为something.vtk和something_else.vtk的顺序文件,我希望它们在重命名过程之后分别对应于100_1.vtk和100_2.vtk。
答案 0 :(得分:1)
您可以从此更改for
循环:
for file in *.vtk; do
到此:
for file in $(ls -1 *.vtk | sort); do
如果你的文件名不包含空格,这应该可以。
答案 1 :(得分:0)
你可以使用sort -kX.Y! X表示列,Y表示字符。 所以,像下面这样的事情应该没问题:
$ ls | sort -k1.5