파일 이름에서 문자와 공백의 마지막 문자 조합을 제거하는 방법

파일 이름에서 문자와 공백의 마지막 문자 조합을 제거하는 방법

터미널에서 파일 이름 끝에 공백과 숫자의 조합이 포함된 폴더의 모든 파일 이름을 변경해 보았습니다. 파일 이름 끝에 공백과 숫자의 조합(예: "12334")이 포함되어 있으며 .mp3 앞에 있는 숫자와 공백을 모두 제거해야 합니다.

예를 들어:

  • filename 1234567.mp3
  • my file 123.mp3
  • your file 98.mp3

이름 바꾸기:

  • filename.mp3
  • my file.mp3
  • your file.mp3

답변1

세게 때리다

$ touch 'filename 1234567.mp3' 'my file 123.mp3' 'your file 98.mp3' 1234.mp3 zzz.mp3

$ for f in *.mp3; do
    g=${f%%[[:space:]]+([[:digit:]]).mp3}
    if [[ $f != $g ]]; then
        mv -v -- "$f" "$g.mp3"
    fi
done
renamed 'filename 1234567.mp3' -> 'filename.mp3'
renamed 'my file 123.mp3' -> 'my file.mp3'
renamed 'your file 98.mp3' -> 'your file.mp3'

$ ls
1234.mp3   filename.mp3  'my file.mp3'  'your file.mp3'   zzz.mp3

이것은 bash를 사용합니다연장하다무늬파일 이름 끝의 공백과 1개 이상의 숫자, 그 뒤에 ".mp3"가 오는 것을 일치시킵니다.

답변2

그리고 zsh:

먼저 함수를 자동 로드됨으로 표시합니다( zmv자주 사용하려는 경우 가장 좋음).~/.zshrc

autoload -Uz zmv

그 다음에:

zmv -n '(**/)(*)( *)(.mp3)' '$1$2$4'

만족스러우면 삭제 -n(테스트 실행)합니다.

마지막 공백 뒤의 부분이 일련의 10진수인 경우에만 파일 이름을 바꾸십시오.

zmv -n '(**/)(*)( <->)(.mp3)' '$1$2$4'

(또는 해당 범위의 숫자를 <98-1234567>바꾸 십시오 <->).

(**/)모든 수준의 하위 디렉터리 와 일치합니다 . 현재 디렉토리의 파일 이름만 바꾸려면 다음을 수행하십시오.

zmv -n '(*)( *)(.mp3)' '$1$3'

관련 정보