次の構文を使用するビデオファイルがたくさんあります。
TV.Show.Title.SXEY.Episode.Title.1080p.Uploader.mkv
これはSXEY
定数ではありません。ファイルによって異なりますX
。Y
名前を次に変更したいです。
TV Show Title - SXEY - Episode Title.mkv
これを行うには、rename
次のコマンドを使用します。
rename 's/\./\ -\ /;s/\./\ -\ /;s/\.(?!mkv)/\ /g;s/1080p.*(?=\.mkv)//g' *.mkv
このコマンドは最初に最初の2つの点をに変換し、他のすべての␣-␣
点を空白に変換し、最後にエピソードのタイトルの終わりとファイル拡張子の間のすべての内容を削除します。
これがどのように改善されるのか、どのようなアイデアがありますか?正規表現を使って最初の2点を変換する方法があると思います。私はrename
それがGNUユーティリティであると信じているので、すべてのUnixシステムには存在せず、より移植可能な代替策を探しています。
ベストアンサー1
この質問は実際にそれに関するものであり幸いですregex
。同じ質問をして頭が痛くならないようにしたいです。
for m in *.mkv;
do echo mv $m "$(awk -F'.' '{
printf "%s %s %s - %s - %s %s.%s", $1, $2, $3, $4, $5, $6, $(NF)}' <<<$m)";
done
出力文字列は予測可能で読みやすく、修正が容易です。ただ削除してくださいecho
編集する
以下のコメントに関してsed
同じ技術を使用し、代わりに出力用のファイル名を処理できますsed
。awk
for m in *.mkv;
do echo mv $m "$(sed 's/\./ /1;s/\./ /1;s/\./ - /1;s/\./ - /1;s/\./ /1;s/\..*\././' <<<$m)";
done