정규식 패턴을 사용하여 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

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

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

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

관련 정보