繁体   English   中英

bash使用正则表达式数组替换重命名

[英]bash rename using regex array substitution

对此职位有一个非常相似的问题。

我想知道如何使用指定的替换来重命名文件名中的出现。 例如,如果原始文件名为:“ the quick brown quick brown fox.avi”,我想将其重命名为“ 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/"

但这只会带来错误。 知道我在做什么错吗?

根据您的示例,我认为您需要多个替换项(不仅仅是将“快速棕色”转换为“慢红色”,而是将单词列表转换为新单词列表。您可以使用分号分隔替换项。这是一种解决方案适用于您的示例:

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' *

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM