名前の変更に必要な正しい正規表現が見つかりません。

名前の変更に必要な正しい正規表現が見つかりません。

私のUbuntuサーバーにいくつかのテレビ番組が保存されており、Kodiが1つだけを除いて認識できるように、すべての番組の名前を変更できました。

エピソード1、シーズン1:

Name - S01E001 - Title part1
Name - S01E001 - Title part2
Name - S01E001 - Title part3

シーズン2エピソード1:

Name - S02E020 - Title part1
Name - S02E020 - Title part2
Name - S02E020 - Title part3

だから、コディは2番目のビデオがS02E20だと思いますが、実際にはS02E01です。 6つのファイルの名前を変更したら、次のようになります。

エピソード1、シーズン1:

Name - S01E001.1 - Title
Name - S01E001.2 - Title
Name - S01E001.3 - Title

シーズン2エピソード1:

Name - S02E001.1 - Title
Name - S02E001.2 - Title
Name - S02E001.3 - Title

ここには多くの質問がありますが、このパターンに合った質問はなく、彼の解決策を説明する人はほとんどいません。マンページはrename役に立ちません。

ベストアンサー1

グループ名、エピソード指定子、タイトル、および部品番号に一致する正規表現を使用して代替テキストに使用/^(.*) - (.*) - (.*) part([0-9]+)/できます。$1$4

rename 's/^(.*) - (.*) - (.*) part([0-9]+)/$1 - $2.$4 - $3/' *

その部分part1以降の内容(ファイル拡張子など)は変更されません。

キャプチャリンググループを変更するには、式のe末尾に修飾子を使用しますs/…/…/。の部分は、変数補間が適用された文字列ではなく、Perl式です。 Perl式では、演算子は文字列を連結するために使用されます。たとえば、部品番号から1を減算したい場合:s/REGEX/REPLACEMENT/eREPLACEMENT.

rename 's/^(.*) - (.*) - (.*) part([0-9]+)/"$1 - $2." . ($4-1) . " - $3"/e' *

おすすめ記事