有一个很好的renaming utility,它附带Perl的安装。如何在Perl regexp中附加一个计数器?这是一个相关的问题,例如对于当前目录中的文件编号问题:
rename 's/^/<here I'd like to have a number of a file being processed>/g' *
例如,如何重命名:
fileA
fileB
fileC
到
1 - fileA
2 - fileB
3 - fileC
修改:
我添加了计数器功能($c
变量) - 请参阅here。它运行正常 - 但是当我尝试指定计数器格式时:
rename_c.pl -c 5.2f 's/^/$c - /' *
它说:
Useless use of concatenation (.) or string in void context at line 120.
它并没有真正使用我告诉它使用的格式。这必须是行号120中的一些简单的语法错误。你能看一下吗?
答案 0 :(得分:4)
基本重命名实用程序可以很好地处理这种情况:
$ rename '$_ = sprintf "%d - %s", ++$count, $_' files...
答案 1 :(得分:3)
有问题的代码行是:
$c = sprintf(eval("%" . "$form", $cNumber));
你不希望eval
在那里;您只需将格式创建为字符串:
$c = sprintf("%$form", $cNumber));
字符串(第一个参数)最终包含所请求的格式,sprintf()
格式$cNumber
使用该格式。
答案 2 :(得分:0)
如果您使用的是 macOS 并使用通过 brew install rename
安装的工具,那么以下应该可以工作:
rename -N ...01 -X -e '$_ = "${_}-counter-$N"' your_files
示例:
> rename -n -N ...01 -X -e '$_ = "${_}-counter-$N"' *.png
'iPad-Pro12.9-4g at 11.24.52.png' would be renamed to 'iPad-Pro12.9-4g at 11.24.52-counter-01.png'
'iPad-Pro12.9-4g at 11.25.09.png' would be renamed to 'iPad-Pro12.9-4g at 11.25.09-counter-02.png'
'iPad-Pro12.9-4g at 11.25.17.png' would be renamed to 'iPad-Pro12.9-4g at 11.25.17-counter-03.png'
答案 3 :(得分:0)
perl one-liner 如果您可以访问 perl 本身
试运行 txt
文件列表
perl -le '($old=$_) && s/^/++$n."-$`"/eg && print for <*.txt>'
重命名
perl -le '($old=$_) && s/^/++$n."-$`"/eg && rename($old,$_) for <*.txt>'
perl -le
运行单行($old=$_)
保存旧名称/^/
匹配乞讨++$n
从 1 开始计数/eg
全局运行,e
用于评估rename($old,$_)
重命名 $old
=> $_
for <*.txt>
循环遍历 txt
文件列表您可以使用此模式重命名所有内容,对于高级重命名,您可能还需要使用 sprintf
。
截图