정규식 패턴을 사용하여 Linux에서 파일 이름 바꾸기

정규식 패턴을 사용하여 Linux에서 파일 이름 바꾸기

다음과 같은 많은 파일의 이름을 바꾸고 싶습니다.

Tum Hi Ho [www.DJMaza.Com].mp3도착하다Tum Hi Ho.mp3

이를 위해 나는 이 명령을 사용했습니다. 하지만 어떻게 든 작동하지 않습니다.

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

답변1

가깝지만 충분하지 않습니다.

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

문제는 이것이 []특수 정규식 구조이므로 실제 대괄호와 일치시키려면 대괄호를 이스케이프 처리해야 한다는 것입니다. 이것이 내 버전에서 백슬래시의 목적입니다.

이스케이프되지 않은 괄호는 문자 클래스라고 불리는 것을 형성합니다. 문자 클래스는 기본적으로 대괄호 안의 모든 문자와 일치합니다. 따라서 [.*]마침표나 별표와 일치합니다. ^클래스 시작 부분에 캐럿( )을 추가 하면 모든 문자와 일치합니다.아니요괄호 안에.

\[내 정규식에서는 여는 괄호 와 닫는 괄호가 아닌 하나 이상의 문자 [^\]]+와 닫는 괄호 를 일치시킨 \]다음 해당 문자를 모두 제거합니다.

관련 정보