正規表現を使用してファイル名を変更すると、Perlの名前変更が中断されます。

正規表現を使用してファイル名を変更すると、Perlの名前変更が中断されます。

perl-renameArch Linuxでは、正規表現に基づいて複数のファイルの名前を変更しようとしています。私のフォルダには、次の形式に従うファイルがたくさんあります。

Title of File [Year] - quality.filetype

「年」は4桁の数字で、画質は720p、1080p、DVDなどのいずれか、ファイル形式はmp4、mkvなどのいずれかが可能です。

次の形式に従うようにファイル名を変更しようとしています。

[Year] Title of File (quality).filetype

ファイルの関連部分と一致するようにこの正規表現を開発しました。

/(.+) \[(\d{4})\](?: - (.+)\.+)*/

いくつかの研究の終わりに名前を変更するために、次のコマンドを開発しました(うまくいく-nと判断したら削除します)。

perl-rename -n 's/(.+) \[(\d{4})\](?: - (.+)\.+)*/[$2] $1 ($3)./'

このコマンドを実行すると、perl-rename は何も印刷せず終了しません。誰もがエラーを見つけるのに役立ちますか?

ベストアンサー1

名前を変更するファイルを指定していません。コマンドの最後にアスタリスクを追加しました。

perl-rename -n 's/(.+) \[(\d{4})\](?: - (.+)\.+)*/[$2] $1 ($3)./' *

また、キャプチャグループを参照する方法が正しくありません。キャプチャグループは\1\2などの代わりに$1$2などで参照されます。作業式は次のとおりです。

perl-rename -n 's/(.+) \[(\d{4})\](?: - (.+)\.+)*/[\2] \1 (\3)./' *

おすすめ記事