답변1
.m4v
쉘 변수에 이름이 주어지면 name
첫 번째 공백을 자르고 파일 이름 접미사를 추가하여 해당 파일의 이름을 얻습니다..srt
$name
.srt
이것은 으로 이루어집니다 ${name%% *}.srt
. 이렇게 하면 일치하는 가장 긴 접미사 문자열이 제거되어 *
결과 끝에 $name
추가됩니다 ..srt
파일의 새 이름 .srt
은 이지만 $name
파일 .m4v
이름 접미사는 으로 변경됩니다 .srt
.
이것은 으로 이루어집니다 ${name%.m4v}.srt
. 그러면 일치하는 .m4v
(가장 짧은) 접미사 문자열이 제거되어 결과 끝에 $name
추가됩니다 ..srt
.srt
다음은 위의 두 매개변수 대체를 사용하여 현재 디렉터리에 있는 파일 목록이 주어지면 각 파일의 이름을 바꾸는 루프입니다 . .mv4
또한 루프는 .m4v
해당 .srt
파일 없이 파일이 존재하는지 또는 파일의 새 이름이 .srt
이미 존재하는지 여부를 알려줍니다.
for name in *.m4v; do
if [ ! -e "${name%% *}.srt" ]; then
printf 'Can not find .srt file for "%s"\n' "$name"
continue
elif [ -e "${name%.m4v}.srt" ]; then
printf '.srt file for "%s" already exists\n' "$name"
continue
fi >&2
mv -- "${name%% *}.srt" "${name%.m4v}.srt"
done
답변2
존재하다 zsh
:
for f (???.srt) () {
(( $# == 1 )) && mv -- $f $1:r.srt
} $f[1,3]?*.m4v(NY2)
이러한 m4v 파일이 있을 때마다 ???.srt
파일 이름이 바뀌고 동일한 접두어 3자를 붙인 파일의 oot 이름이 복사됩니다 r
.m4v