我正在尝试使用“重命名”重命名一堆文件,并且我的正则表达式设置得很好:
rename --verbose --path 's|^\[(....)\](.*)\.(.*)|$2 ($1).$3|' *
但我真的很想将每个文件放入一个具有共同开头的目录中,所以我尝试了:
rename --verbose --path 's|^\[(....)\](.*)\.(.*)|$2 ($1)/$2 ($1).$3|' *
但这抱怨没有任何目录存在(因为它们不存在)。我是否错过了一个有用的重命名标志,或者他们是一个更好的工具?
如果您使用的是基于 Perl 的rename
,那么没有什么可以阻止您调用mkdir()
以创建丢失的目录:
rename --verbose '
s|^\[(....)\](.*)\.(.*)|$2 ($1)/$2 ($1).$3| &&
mkdir("$2 ($1)")' *
这与您使用的 Perl 表达式相同,mkdir()
如果表达式匹配,则在末尾添加调用以创建目录。
原始替换是否正确,或者是否有意义,我不知道(我不知道您使用的文件名类型)。关键是因为表达式是一个通用的 Perl 表达式,你可以自由使用任何 Perl 代码,只要$_
(默认变量)在最后设置为结果文件名。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句