특히 "이름 바꾸기"를 사용하여 Linux 파일 이름에서 다섯 번째 문자를 제거해야 합니다.

특히 "이름 바꾸기"를 사용하여 Linux 파일 이름에서 다섯 번째 문자를 제거해야 합니다.

나는 계속 원을 그리며 가고 있습니다!

특히 Kubuntu Linux에서 "이름 바꾸기"를 사용하여 파일 이름에서 다섯 번째 문자를 제거해야 합니다.

이 문자는 이름의 다른 곳에 나타나므로 검색이 실패합니다.

나는 다음을 보았습니다:

rename 's/-.*\././' -- *.mp3 *.mp3 

그런데 도움말 파일을 확인해 보니 해당 기능에 대한 설명이 rename없었습니다 .s

감사해요

답변1

rename일반적으로 사용되는 두 가지 버전이 있습니다. a (때때로 호출됨) 이 있는 경우 구문은 perl"replace" 와 같은 작업에 포함된 prename정규식을 사용합니다. perl다섯 번째 문자를 제거하려면 처음 4개 문자를 일치시킨 다음 여섯 번째 문자부터 나머지 문자를 일치시켜야 합니다.

이것은 적절한 RE입니다. 첫 번째 대괄호 표현식은 선택적 경로 구성 요소와 일치합니다. 두 번째는 파일 이름의 시작 부분과 일치합니다. 파일 이름의 끝 부분을 일치시킬 필요도 없고, 그 안에 있는 어떤 것도 변경할 필요가 없으며, 앵커로 필요하지도 않습니다.

^(.*/)?(....).

점은 "모든 문자"에 해당합니다. 위쪽 화살표는 문자열의 시작 부분에 바인딩됩니다. 시퀀스는 .*"0개 이상의 문자"를 의미합니다. 물음표를 사용하면 이전 부분이 선택 사항이 될 수 있습니다. 괄호로 묶인 부분은 $1, $2등 일치하는 부분에 다시 적용할 수 있습니다.

sglob과 일치하는 모든 파일에 대해 이것을 "replace" 명령( )에 넣으면 *.mp3다음과 같은 결과를 얻을 수 있습니다.

rename 's/^(.*/)?(....)./$1$2/' ./*.mp3

관련 정보