일련번호를 제거하여 다음 파일의 이름을 바꾸고 싶습니다.
01 X.mp3
도착하다X.mp3
02 Add Me In.mp3
도착하다Add Me In.mp3
아래 이름 바꾸기 명령을 사용하려고합니다.
rename -v -n 's/^\d+\s*([a-z]+\.mp3)$/$1\.mp3/' *.mp3
이 명령을 실행하면 다음 오류가 발생합니다.
Using expression: sub { use feature ':5.18'; s/^\d+\s*([a-z]+\.mp3)$/$1\.mp3/ }
답변1
왜 이런 오류가 발생하는지 이해가 되지 않습니다. 사실, 표시된 것보다 더 많은 오류 줄이 있다고 확신합니다. 우선 실제 오류 메시지는 없습니다.
그러나 해당 정규식은 실제로 샘플 파일과 일치하지 않습니다. 사용 중인 것은 [a-z]+\.mp3
소문자만 일치하며 확장자는 항상 일치하므로 이름에 다음이 포함된 파일만 일치합니다.오직제거할 숫자와 공백 뒤에 나오는 소문자입니다. match [a-zA-Z]
또는 use를 사용 s///i
하면 일치 항목에서 대소문자를 구분하지 않을 수 있지만 나머지 단어는 전혀 일치하지 않는 것이 좋습니다. 처음부터 숫자와 공백만 제거하고 싶으므로 일치시키세요.
rename -vn 's/^\d+\s+//' *mp3
답변2
솔루션 활용매개변수 확장
for i in *.mp3 ; do mv "$i" "${i#"${i%%[!0-9 ]*}"}" ; done
${i%%[!0-9 ]*}
숫자/공백이 아닌 첫 번째 문자부터 끝까지 삭제합니다.- 나머지 문자는 변수에 전달된
${i#
다음i
변수의 시작 부분에서 제거되어 시작 숫자와 공백 없이 원하는 파일 이름이 생성됩니다.
답변3
제거하면 -n
작동됩니다. -n
"결과를 변경하는 대신 결과만 인쇄한다"는 뜻입니다.