我想重命名许多文件,例如
Tum Hi Ho [www.DJMaza.Com].mp3
到Tum Hi Ho.mp3
为此,我使用了此命令。但不知何故它不起作用。
`rename -n 's/(.*)([.*])(\.mp3)/$1$3/' *.mp3`
答案1
你很接近,但还不够:
rename -n 's/\[[^\]]+\]//' *.mp3
问题是这[]
是一个特殊的正则表达式构造,因此如果要匹配实际的括号,则需要对括号进行转义。这就是我的版本中反斜杠的目的。
未转义的括号形成所谓的字符类。字符类基本上可以匹配括号内的任何字符。因此[.*]
匹配句点或星号。当您将插入符号 ( ^
) 添加到类的开头时,它会匹配任何字符不是括号内。
在我的正则表达式中,我们匹配一个左括号\[
加上一个或多个不是右括号的字符[^\]]+
加上一个右括号\]
,然后删除所有这些字符。