Awk
正則表達式後刪除部分名稱
我有許多使用命名方案的影片文件,例如
some-words-SxxExxx.extension
這是我的偏好。不幸的是,我有很多這種格式的文件
some-words-SxxExx-words-I-want-to-remove.extension
我需要在 Exx 部分之後自動刪除所有內容。
假設
x
’s 是佔位符,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
from 前面mv
的-n
標誌zmv
和file-rename
實際重命名的標誌。mv -n
另一方面,告訴它不要覆蓋現有文件,這至少在 GNU 中有效mv
。)