按升序批量重命名文件

按升序批量重命名文件

我有一批文件:

$ ls
Li1Fe1O2_11 Li1Fe2O3_8  Li1Fe3O4_2  Li1Fe3O4_5  Li2Fe1O3_16 Li2Fe2O4_12 Li3Fe1O4_19 Li3Fe1O4_22
Li1Fe1O2_14 Li1Fe2O3_9  Li1Fe3O4_3  Li1Fe3O4_6  Li2Fe1O3_17 Li2Fe2O4_13 Li3Fe1O4_20
Li1Fe2O3_7  Li1Fe3O4_1  Li1Fe3O4_4  Li2Fe1O3_15 Li2Fe2O4_10 Li3Fe1O4_18 Li3Fe1O4_21

我想将它们重命名为:

enum-00132
enum-00133
enum-00134
...

我试图研究重命名但没有成功。

答案1

用这个:

c=132
for f in *; do
  mv -v "$f" "enum-$(printf '%0*d' 5 $c)"
  c=$(($c+1))
done

c=<your_starting_number>;我假设132就像你的问题一样。然后for循环运行当前目录中的所有文件。对于每个文件mv都会调用该命令。该printf实用程序打印带有前导零的新文件名。最后计数器变量$c增加+1。

编辑:如果你只想目录使用这个(*/仅目录,其余保持不变):

c=132
for d in */ ; do
  mv -v "$d" "enum-$(printf '%0*d' 5 $c)"
  c=$(($c+1))
done

相关内容