터미널에서 파일 이름 끝에 공백과 숫자의 조합이 포함된 폴더의 모든 파일 이름을 변경해 보았습니다. 파일 이름 끝에 공백과 숫자의 조합(예: "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'