![파일 이름에서 특정 문자열을 제거하는 방법은 무엇입니까?](https://linux55.com/image/108442/%ED%8C%8C%EC%9D%BC%20%EC%9D%B4%EB%A6%84%EC%97%90%EC%84%9C%20%ED%8A%B9%EC%A0%95%20%EB%AC%B8%EC%9E%90%EC%97%B4%EC%9D%84%20%EC%A0%9C%EA%B1%B0%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
나는 집에 있는 HTPC(플렉스 서버)용으로 많은 DVD를 리핑합니다. 일부 파일 이름에는 원하지 않는 문자가 포함되어 있습니다. 원래 파일 이름 문자열의 대부분을 유지하고 그 안의 원하지 않는 텍스트를 제거하고 싶습니다. 여기 몇 가지 예가 있어요.
- 기존 파일 이름 , 새 파일 이름
Apollo 18-1.mp4
삭제 규칙: 선택한 디렉터리에서 "-1"로 끝나는 모든 파일 이름을 찾고 "-1" 문자열을 제거합니다.-1
Apollo 18.mp4
- 파일 이름
ENTOURAGE_DISC1.Title1.avi
,.Title1
새 파일 이름 삭제ENTOURAGE_DISC1.avi
규칙: 선택한 디렉터리에서 ".Title1"로 끝나는 모든 파일 이름을 찾아 ".Title1" 문자열을 제거합니다.
답변1
zsh
s 를 사용하여 zmv
다음 두 가지 예에서 요구 사항을 추론합니다.
autoload zmv # best in ~/.zshrc
zmv '(*)(.Title<->|-<->).(mp4|avi)' '$1.$3'
<->
임의의 십진수 시퀀스입니다. ( <x-y>
경계를 제공하지 않는 형태). .Title1
특정 -1
확장명 만 원하는 경우 언제든지 다음과 같이 변경할 수 있습니다.
zmv '(*)(.Title|-)1(.[^.]##)' '$1$3'
[^.]##
점이 아닌 문자 하나 이상과 일치합니다.