저는 정규식을 처음 접하고 정규식을 사용하여 일부 파일의 이름을 바꾸려고 합니다. 나는 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.//' *.mp3
rename '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