
다음과 같은 명명 체계를 사용하는 여러 개의 비디오 파일이 있습니다.
일부 단어-SxxExx.extension
그게 내 취향이야. 안타깝게도 이 형식의 파일이 많이 있습니다.
일부-단어-SxxExx-단어-I-want-to-remove.extension
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
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 애호가라면 쉘 대체를 사용하여 더 간단하게 이를 수행할 수 있을 것으로 기대하지만).