大量重命名文件但保持相同的排序

Massive rename of files but keep the same sorting

我在一个文件夹中有很多具有相同扩展名(例如 .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。

你能改变你的 for 循环吗:

 for file in *.vtk; do 

对此:

 for file in $(ls -1 *.vtk | sort); do 

如果您的文件名不包含空格,这应该可以。

可以使用排序-kX.Y! X 指的是列,Y 指的是字符。 所以,像下面这样的东西应该没问题:

$ ls | sort -k1.5