对于this post,我有一个非常类似的问题。
我想知道如何使用指定的替换来重命名文件名中的实例。例如,如果原始文件名为:'the quick brown quick brown fox.avi‘,我想将其重命名为'the slow red slow red fox.avi’。
我试过这个:
new="(quick=>'slow',brown=>'red')"
regex="quick|brown"
rename -v "s/($regex)/$new{$1}/g" *
但是没有爱:
我还试着用
regex="qr/quick|brown/"
但这只会产生错误。你知道我做错了什么吗?
发布于 2010-12-28 09:05:23
根据您的示例,我认为您需要多个替换(不仅仅是将“快速棕色”转换为“慢速红色”,而是将单词列表转换为新单词列表。您可以用分号分隔替换项。以下是适用于您的示例的解决方案:
rename -v 's/quick/slow/g;s/brown/red/g' *
如果您确实决定使用数组将旧字符串映射到新字符串,则可以在参数中塞入更多Perl以进行重命名(但在某些情况下,您可能只将Perl脚本作为独立脚本编写):
rename -v '%::new=(quick=>"slow",brown=>"red");s/(quick|brown)/$::new{$1}/g' *
https://stackoverflow.com/questions/4542932
复制相似问题