使用正则表达式模式重命名Linux中的文件

使用正则表达式模式重命名Linux中的文件

我想重命名许多文件,例如

Tum Hi Ho [www.DJMaza.Com].mp3Tum Hi Ho.mp3

为此,我使用了此命令。但不知何故它不起作用。

`rename -n 's/(.*)([.*])(\.mp3)/$1$3/' *.mp3`

答案1

你很接近,但还不够:

rename -n 's/\[[^\]]+\]//' *.mp3

问题是这[]是一个特殊的正则表达式构造,因此如果要匹配实际的括号,则需要对括号进行转义。这就是我的版本中反斜杠的目的。

未转义的括号形成所谓的字符类。字符类基本上可以匹配括号内的任何字符。因此[.*]匹配句点或星号。当您将插入符号 ( ^) 添加到类的开头时,它会匹配任何字符不是括号内。

在我的正则表达式中,我们匹配一个左括号\[加上一个或多个不是右括号的字符[^\]]+加上一个右括号\],然后删除所有这些字符。

相关内容