"이름 바꾸기" 및 정규식을 사용하여 파일 이름 편집

"이름 바꾸기" 및 정규식을 사용하여 파일 이름 편집

저는 정규식을 처음 접하고 정규식을 사용하여 일부 파일의 이름을 바꾸려고 합니다. 나는 rename(이것) 해당 파일의 이름을 바꿉니다. 아래는 예시 명령입니다.

$ rename -n 's/\(feat.//' *.mp3( -n옵션=시운전)

산출:

'103 Flume - Left Alone (feat. Jezzabell Doran).mp3' 
would be renamed to '103 Flume - Left Alone  Jezzabell Doran).mp3'

'214 Flume - Sleepless (feat. Jezzabell Doran) (Shlohmo Remix).mp3' 
would be renamed to '214 Flume - Sleepless  Jezzabell Doran) (Shlohmo Remix).mp3'

내가 하고 싶은 건 삭제하는 거야"(feat.아티스트 이름)"를 파일 이름에서 찾습니다. (왼쪽 대괄호에서 오른쪽 대괄호로). 하지만 파일 이름에서 기존의 다른 대괄호를 제거하고 싶지 않습니다. 예를 들어 "214 Flume - Sleepless (feat. Jezzabell Doran) (Shlohmo) 이름을 바꾸세요. 리믹스) ) .mp3" ~ "214 Flume - Sleepless (Shlohmo Remix).mp3"

(편집하다:도마하나를 주었다답변아래 관련)
파일 이름에서 "-"를 제거하는 방법을 알고 있는데 별도의 명령이 아닌 's/ - //'동일한 명령에서 이를 어떻게 수행합니까?rename 's/\(feat.//' *.mp3rename 's/ - //' *.mp3

답변1

명령은 비슷합니다 sed. 예를 들어 options 를 사용하여 여러 대체 항목을 지정할 수 있습니다 -e.

rename -n -e 's/\(feat.//' -e 's/ - //' *.mp3

그리고 얻다

'103 Flume - Left Alone (feat. Jezzabell Doran).mp3' would be renamed to '103 FlumeLeft Alone  Jezzabell Doran).mp3'                                            
'214 Flume - Sleepless (feat. Jezzabell Doran) (Shlohmo Remix).mp3' would be renamed to '214 FlumeSleepless  Jezzabell Doran) (Shlohmo Remix).mp3'

문서에는 다음과 같이 나와 있습니다.

-e,--expr

이 옵션에 대한 코드 인수는 변수의 파일 이름을 취하고 $_이를 수정하여 파일 이름을 바꾸는 Perl 표현식이어야 합니다. 다른 -c, -C, -e또는 -s옵션이 지정되지 않은 경우 다음을 수행할 수 있습니다.-z소홀히 하다-e코드의 앞 부분 부터 .

답변2

당신이 원하는 것은욕심이 없다닫는 괄호를 일치시키고 포함합니다. 문자 그대로 받아들이려면 마침표를 피해야 합니다.

$ rename -n 's/\(feat\..*?\)//' *.mp3
103 Flume - Left Alone (feat. Jezzabell Doran).mp3 renamed as 103 Flume - Left Alone .mp3
214 Flume - Sleepless (feat. Jezzabell Doran) (Shlohmo Remix).mp3 renamed as 214 Flume - Sleepless  (Shlohmo Remix).mp3

관련 정보