使用正規表示式模式重新命名Linux中的文件

使用正規表示式模式重新命名Linux中的文件

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

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

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

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

答案1

你很接近,但還不夠:

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

問題是這[]是一個特殊的正規表示式構造,因此如果要匹配實際的括號,則需要對括號進行轉義。這就是我的版本中反斜線的目的。

未轉義的括號形成所謂的字元類。字元類別基本上可以匹配括號內的任何字元。因此[.*]匹配句點或星號。當您將插入符號 ( ^) 新增到類別的開頭時,它會匹配任何字元不是括號內。

在我的正規表示式中,我們匹配一個左括號\[加上一個或多個不是右括號的字元[^\]]+加上一個右括號\],然後刪除所有這些字元。

相關內容