나는 계속 원을 그리며 가고 있습니다!
특히 Kubuntu Linux에서 "이름 바꾸기"를 사용하여 파일 이름에서 다섯 번째 문자를 제거해야 합니다.
이 문자는 이름의 다른 곳에 나타나므로 검색이 실패합니다.
나는 다음을 보았습니다:
rename 's/-.*\././' -- *.mp3 *.mp3
그런데 도움말 파일을 확인해 보니 해당 기능에 대한 설명이 rename
없었습니다 .s
감사해요
답변1
rename
일반적으로 사용되는 두 가지 버전이 있습니다. a (때때로 호출됨) 이 있는 경우 구문은 perl
"replace" 와 같은 작업에 포함된 prename
정규식을 사용합니다. perl
다섯 번째 문자를 제거하려면 처음 4개 문자를 일치시킨 다음 여섯 번째 문자부터 나머지 문자를 일치시켜야 합니다.
이것은 적절한 RE입니다. 첫 번째 대괄호 표현식은 선택적 경로 구성 요소와 일치합니다. 두 번째는 파일 이름의 시작 부분과 일치합니다. 파일 이름의 끝 부분을 일치시킬 필요도 없고, 그 안에 있는 어떤 것도 변경할 필요가 없으며, 앵커로 필요하지도 않습니다.
^(.*/)?(....).
점은 "모든 문자"에 해당합니다. 위쪽 화살표는 문자열의 시작 부분에 바인딩됩니다. 시퀀스는 .*
"0개 이상의 문자"를 의미합니다. 물음표를 사용하면 이전 부분이 선택 사항이 될 수 있습니다. 괄호로 묶인 부분은 $1
, $2
등 일치하는 부분에 다시 적용할 수 있습니다.
s
glob과 일치하는 모든 파일에 대해 이것을 "replace" 명령( )에 넣으면 *.mp3
다음과 같은 결과를 얻을 수 있습니다.
rename 's/^(.*/)?(....)./$1$2/' ./*.mp3