다음과 같은 명명 체계를 사용하는 많은 비디오 파일이 있습니다.
몇 가지 단어-SxxExx.extension
이것이 내가 선호하는 것입니다. 안타깝게도 이 형식의 파일이 많이 있습니다.
일부 단어-SxxExx-단어-.확장자를 삭제하고 싶습니다.
Exx 섹션 이후의 모든 항목을 자동으로 삭제해야 합니다.
답변1
x
자리 표시자를 가정하면 zmv
다음이 가능합니다.
zmv -nv '(*S??E??)*.ext' '$1.ext'
% touch foo-S01E02-garbage.ext bar-S07E17-moregarbage.ext
% zmv -nv '(*S??E??)*.ext' '$1.ext'
mv -- bar-S07E17-moregarbage.ext bar-S07E17.ext
mv -- foo-S01E02-garbage.ext foo-S01E02.ext
'(*S[0-9][0-9]E[0-9][0-9])*.ext'
대신에 숫자만 일치를 사용할 수도 있습니다 x
.
또는 다음을 사용하려는 경우 sed
:
for f in *.ext; do
echo mv -n "$f" "$(echo "$f" | sed -e 's/\(S[0-9][0-9]E[0-9][0-9]\).*\.ext/\1.ext/')"
done
또는 Perl rename
명령을 사용하십시오(현재 file-rename
Debian에서는 이를 호출함).
file-rename -n -v 's/(S[0-9]{2}E[0-9]{2}).*\.ext/$1.ext/' *.ext
( 실제로 이름을 바꾸려면 echo
앞의 mv
및 및 -n
플래그를 제거하십시오. 반면에 기존 파일을 덮어 쓰지 말라고 지시합니다. 이는 최소한 GNU에서 작동합니다 .)zmv
file-rename
mv -n
mv
답변2
어때요?
$ echo 'some-words-SxxExx-words-I-want-to-remove.extension' | sed 's/\(S..E..\)[^.]*/\1/'
some-words-SxxExx.extension
(zsh 애호가들이 쉘 대체를 사용하여 이 작업을 더 간단하게 수행할 수 있었으면 좋겠지만).