다음과 같은 많은 파일의 이름을 바꾸고 싶습니다.
Tum Hi Ho [www.DJMaza.Com].mp3
도착하다Tum Hi Ho.mp3
이를 위해 나는 이 명령을 사용했습니다. 하지만 어떻게 든 작동하지 않습니다.
`rename -n 's/(.*)([.*])(\.mp3)/$1$3/' *.mp3`
답변1
가깝지만 충분하지 않습니다.
rename -n 's/\[[^\]]+\]//' *.mp3
문제는 이것이 []
특수 정규식 구조이므로 실제 대괄호와 일치시키려면 대괄호를 이스케이프 처리해야 한다는 것입니다. 이것이 내 버전에서 백슬래시의 목적입니다.
이스케이프되지 않은 괄호는 문자 클래스라고 불리는 것을 형성합니다. 문자 클래스는 기본적으로 대괄호 안의 모든 문자와 일치합니다. 따라서 [.*]
마침표나 별표와 일치합니다. ^
클래스 시작 부분에 캐럿( )을 추가 하면 모든 문자와 일치합니다.아니요괄호 안에.
\[
내 정규식에서는 여는 괄호 와 닫는 괄호가 아닌 하나 이상의 문자 [^\]]+
와 닫는 괄호 를 일치시킨 \]
다음 해당 문자를 모두 제거합니다.