将目录中的文件重命名为特定前缀

时间:2014-03-11 21:57:28

标签: shell unix scripting rename

我在目录中有54个文件,其名称从* file00_Layer-53.png *到* file52_Layer-1.png *。我想将所有这些文件重命名为 file01.png file53.png

我知道我必须使用rename命令,但是我很难使用它。提前致谢

1 个答案:

答案 0 :(得分:2)

您可以使用重命名命令:

c=0 rename 's/.*/sprintf("file%02d.png", ++$ENV{c})/e' *.png

如果要先进行测试,请使用-n标志:

c=0 rename -n 's/.*/sprintf("file%02d.png", ++$ENV{c})/e' *.png

这种方法的工作方式是,对于每个参数,它执行perl s///表达式,并执行从原始字符串到替换字符串的重命名。在替换字符串中,我使用sprintf来格式化名称,其中我使用环境变量c作为1的计数器。

或者您可以使用简单的循环计数器:

j=1; for i in *.png; do mv "$i" file"$j".png; let j=j+1; done

如果您想使用0填充2位数字:

j=1; for i in *.png; do mv "$i" file$(printf %02d $j).png; let j=j+1; done