首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用regex数组替换的bash重命名

使用regex数组替换的bash重命名
EN

Stack Overflow用户
提问于 2010-12-28 08:47:37
回答 1查看 831关注 0票数 1

对于this post,我有一个非常类似的问题。

我想知道如何使用指定的替换来重命名文件名中的实例。例如,如果原始文件名为:'the quick brown quick brown fox.avi‘,我想将其重命名为'the slow red slow red fox.avi’。

我试过这个:

代码语言:javascript
运行
复制
new="(quick=>'slow',brown=>'red')"
regex="quick|brown"
rename -v "s/($regex)/$new{$1}/g" *

但是没有爱:

我还试着用

代码语言:javascript
运行
复制
regex="qr/quick|brown/"

但这只会产生错误。你知道我做错了什么吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-12-28 09:05:23

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

代码语言:javascript
运行
复制
rename -v 's/quick/slow/g;s/brown/red/g' *

如果您确实决定使用数组将旧字符串映射到新字符串,则可以在参数中塞入更多Perl以进行重命名(但在某些情况下,您可能只将Perl脚本作为独立脚本编写):

代码语言:javascript
运行
复制
rename -v '%::new=(quick=>"slow",brown=>"red");s/(quick|brown)/$::new{$1}/g' *
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4542932

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档