请任何人。
我如何在Linux中重命名一堆文件,如:
abc-def-0001.xxx acb-def-0002.xxx
到:
abc-def##0001.xxx ...
我已经尝试了几个来自SO的建议:
rename 's/(.*)-/$1##/' *.xxx
但在我的环境中没有按预期工作。
答案 0 :(得分:2)
您可以在正则表达式中使用前瞻:
Foo2
这将匹配&替换后跟数字的第一个rename -n 's/-(?=\d)/##/' *.xxx
。
但是,您的模式_
也适用于给定的示例,但这假设您总是替换最后一个下划线。
答案 1 :(得分:0)
所以我最终使用了:
for i in *; do mv "$i" "`echo $i | sed "s/\(.*\)-/\1##/"`"; done
我认为我的rename命令版本不支持perl表达式...