정규식을 사용하여 파일 이름을 바꿀 때 Perl 이름 바꾸기가 중단됩니다.

정규식을 사용하여 파일 이름을 바꿀 때 Perl 이름 바꾸기가 중단됩니다.

perl-renameArch Linux에서 정규식을 기반으로 여러 파일의 이름을 바꾸려고 합니다 . 내 폴더에는 다음 형식을 따르는 파일이 많이 있습니다.

Title of File [Year] - quality.filetype

"연도"는 4자리 숫자이고, 화질은 720p, 1080p, DVD 등 중 하나, 파일 형식은 mp4, mkv 등 중 하나가 가능합니다.

다음 형식을 따르도록 파일 이름을 바꾸려고 합니다.

[Year] Title of File (quality).filetype

파일의 관련 부분과 일치하도록 이 정규식을 개발했습니다.

/(.+) \[(\d{4})\](?: - (.+)\.+)*/

몇 가지 연구 끝에 이름을 바꾸기 위해 다음 명령을 개발했습니다( -n작동할 것으로 확인되면 제거하겠습니다).

perl-rename -n 's/(.+) \[(\d{4})\](?: - (.+)\.+)*/[$2] $1 ($3)./'

이 명령을 실행하면 perl-rename은 아무것도 인쇄하지 않고 종료되지 않습니다. 누구든지 오류를 찾는 데 도움을 줄 수 있습니까?

답변1

이름을 바꿀 파일을 지정하지 않았습니다. 명령 끝에 별표를 추가했습니다.

perl-rename -n 's/(.+) \[(\d{4})\](?: - (.+)\.+)*/[$2] $1 ($3)./' *

또한 캡처 그룹을 참조하는 방식이 올바르지 않습니다. 캡처 그룹은 \1, \2등 대신 $1, $2등 으로 참조됩니다. 작업 표현식은 다음과 같습니다.

perl-rename -n 's/(.+) \[(\d{4})\](?: - (.+)\.+)*/[\2] \1 (\3)./' *

관련 정보