배치 파일 이름 바꾸기

배치 파일 이름 바꾸기

다음과 유사한 파일 이름을 가진 파일이 많이 있습니다.

myvideo.s01e01.episode.title.here.mp4
myvideo.s01e02.episode.title.here.mp4

일괄적으로 이름을 바꾸고 싶으므로 다음과 같이 됩니다.

myvideo.s01e01.mp4
myvideo.s01e02.mp4
etc.

저는 macOS를 사용하고 있지만 파일이 네트워크 공유에 있으므로 Linux를 통해서도 주소를 지정할 수 있습니다.

답변1

그리고 zsh:

autoload zmv
zmv -n '(*.s<->e<->).*(.mp4)' '$1$2'

만족스러우면 삭제하세요 -n(시험 실행).

답변2

액세스 권한이 있는 경우 perl-rename( rename일부 Linux 배포판, prename기타 배포판 perl-rename등에서 호출됨) 다음을 수행할 수 있습니다.

$ rename -n 's/(.+?\..+?\.).*\.(.*)/$1$2/s' *mp4
myvideo.s01e01.episode.title.here.mp4 -> myvideo.s01e01.mp4
myvideo.s01e02.episode.title.here.mp4 -> myvideo.s01e02.mp4

이는 실제로 이름을 바꾸지 않고 명령이 수행할 작업을 인쇄합니다. 예상한 결과가 출력되면 -n실제로 파일 이름을 바꾸지 않고 명령을 실행하십시오.

파일 이름이 없고 perl-rename파일 이름에 개행 문자가 포함되어 있지 않고 모든 바이트가 사용자 로케일의 유효한 문자로 구성되는 경우 셸에서 직접 이 작업을 수행할 수도 있습니다(이것은 zsh-like 셸 및 BSD 호환 sed구현을 가정함).

for f in *mp4; do 
    newName=$(sed -E 's/(([^.]*\.){2}).*\.([^.]*)$/\1\3/' <<<"$f"); 
    echo mv -- "$f" "$newName"; 
done

올바르게 표시되면 echo.

관련 정보