我有一批文件:
$ 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