我想将文件重命名为递增数字格式,如下所示:
04.jpg
05.jpg
06.jpg
因此,我需要提出一种增加变量值并将其传递给的方法rename
。互联网以某种方式告诉我要这样做:
rename -n 'our $i; s/\d+/sprintf("new\/%03d", $i++)/e' *.*
关键是我不知道这是如何工作的。到目前为止,我只能猜测our $i
将响应传递未知$i
变量的引用进行重命名。然后将其sprintf("new\/%03d", $i++)
部分添加。根据该结论,我决定尝试以下方法:
i=4
rename -n 'our $i; s/\d+/sprintf("new\/%03d", $i++)/e' *.*
它失败了。如何设置启动器值,$i
以便重命名可以按预期工作?
与zsh
:
autoload zmv
n=0; zmv -n '*.jpg(#qn[1,100])' 'new/${(l[2][0])$((++n))}.jpg'
最多可重命名100个jpeg文件(按数字顺序列出)。
(-n
如果需要,请将其移开以进行空转)。
使用perl
基于-的rename
s和基本shell,您可以执行以下操作(无需对原始列表进行数字排序,也无需采取措施zmv
):
rename -n '
our $i //= 1;
exit if $i > 100;
$_ = sprintf "new/%02d.jpg", $i++' ./*.jpg
rename
perl
使用中当前文件的名称在循环中为每个文件运行给定的代码$_
。该代码旨在更改$_
为文件的新名称。
在此our $i
定义$i
变量的范围。您不希望使用本地作用域,my $i
因为您希望$i
从一个文件到下一个文件记住增量值,因此our
(请参阅perldoc -f our
以获取详细信息)。
该s/regexp/replacement/flags
perl的结构是做内容的正则表达式替换$_
。如果要从头开始构建替换名称,则在这里不需要它。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句