다음과 같은 파일이 많이 있습니다.
Brooklyn Nine-Nine S01 E01 [H264].mkv
Brooklyn Nine-Nine S01 E02 [H264].mkv
Brooklyn Nine-Nine S01 E03 [H264].mkv
Brooklyn Nine-Nine S01 E04 [H264].mkv
Brooklyn Nine-Nine S01 E05 [H264].mkv
Brooklyn Nine-Nine S01 E06 [H264].mkv
Brooklyn Nine-Nine S01 E07 [H264].mkv
Brooklyn Nine-Nine S01 E08 [H264].mkv
...
S01과 E08 사이의 공백이 제거되도록 이름을 바꾸고 싶습니다. 예
Brooklyn Nine-Nine S01E08 [H264].mkv
모든 공백을 제거하는 명령을 찾았습니다.
IFS="\n"
for file in *.mkv;
do
mv "$file" "${file/[[:space:]]}"
done
하지만 Sxx와 Exx 사이의 공백을 제거하고 싶습니다.
답변1
가장 쉬운 방법은 이 rename
도구를 사용하는 것입니다. 이 도구를 사용하면 여러 파일 이름을 간단하게 검색하고 바꿀 수 있습니다.
rename [options] <expression> <replacement> <file>...
다음과 같이 해야 합니다.
rename " E0" E0 Brooklyn*.mkv
Debian과 유사한 배포판을 사용하는 경우 명령은 rename
대신 다른 입력 구문을 사용하여 Perl 스크립트를 호출할 수 있습니다 util-linux
. 이 경우 rename.ul
올바른 구문을 호출하는 도구를 사용하십시오.Debian/Ubuntu의 이름 바꾸기 유틸리티가 CentOS와 같은 다른 배포판의 이름 바꾸기 유틸리티와 다른 이유는 무엇입니까?
답변2
for 루프는 다음과 같이 편집할 수 있습니다.
for file in *.mkv;
do
mv "$file" "${file//S01 E0/S01E0}"
done
또는 rename
다음 명령을 사용하십시오.
rename 's/S01 E0/S01E0/' *.mkv