Linux - 通过用' ##'替换最后一个连字符来重命名所有文件。

时间:2016-04-14 14:48:00

标签: linux bash shell

请任何人。

我如何在Linux中重命名一堆文件,如:

abc-def-0001.xxx
acb-def-0002.xxx

到:

abc-def##0001.xxx
...

我已经尝试了几个来自SO的建议:

rename 's/(.*)-/$1##/' *.xxx

但在我的环境中没有按预期工作。

2 个答案:

答案 0 :(得分:2)

您可以在正则表达式中使用前瞻:

Foo2

这将匹配&替换后跟数字的第一个rename -n 's/-(?=\d)/##/' *.xxx

但是,您的模式_也适用于给定的示例,但这假设您总是替换最后一个下划线。

答案 1 :(得分:0)

所以我最终使用了:

for i in *; do mv "$i" "`echo $i | sed "s/\(.*\)-/\1##/"`"; done

我认为我的rename命令版本不支持perl表达式...