正規表現の後ろの名前の一部を削除

正規表現の後ろの名前の一部を削除

次の命名方式を使用する多くのビデオファイルがあります。

いくつかの単語 - 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

またはPerlrenameコマンドを使用してください(現在のfile-renameDebianではこれを呼び出します)。

file-rename -n -v 's/(S[0-9]{2}E[0-9]{2}).*\.ext/$1.ext/' *.ext

(実際に名前を変更するには、前のフラグとechoフラグmv-n削除しますが、既存のファイルを上書きしないように指示します。これは少なくともGNUで動作します。)zmvfile-renamemv -nmv

おすすめ記事