【发布时间】:2014-04-15 18:17:27
【问题描述】:
我在一个目录中有 54 个文件,它们的名称从 *file00_Layer-53.png* 到 *file52_Layer-1.png*。我想将所有这些文件重命名为 file01.png 到 file53.png
我知道我必须使用重命名命令,但我在使用它时遇到了困难。提前致谢
【问题讨论】:
标签: shell unix scripting rename
我在一个目录中有 54 个文件,它们的名称从 *file00_Layer-53.png* 到 *file52_Layer-1.png*。我想将所有这些文件重命名为 file01.png 到 file53.png
我知道我必须使用重命名命令,但我在使用它时遇到了困难。提前致谢
【问题讨论】:
标签: shell unix scripting rename
你可以使用重命名命令:
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
【讨论】: