問題がありますrename -v 's/\.jpg$/\_120x120.jpg/' *.jpg
zzr31_120x120.jpg
に改名zzr31_120x120_120x120.jpg
120×120 を持たないものだけの名前を変更することをより明確にするにはどうすればよいですか? その上で、可能であれば 1 つのコマンドで作成するだけでなくjpg
、gif
1png
つのコマンドで作成するにはどうすればよいですか?
否定先読みを使用し、正規表現を使用して選択した拡張子と一致させる必要があります。
とにかく、これは私の提案です
rename -n 's/^((?:(?!_120x120).)*)\.(jpg|png|gif)$/$1_120x120.$2/' *
-n を削除して機能させます。そうしないと、名前が変更されるものだけが表示され、実際には名前が変更されません
と呼ばれるものを使用する必要がありますnegative look-behind assertions
。perlre(1)
詳細については、ドキュメントを確認してください。使用する正確な構文を思いつくのに苦労しています。これが私の最後の努力でした:
/(.*)\K120x120\.(jpg|gif|png)/$1_120x120.$2/
簡単な答えは、最初に「適切な」ファイルを移動することです。
mkdir foo
mv *_120x120.* foo
rename -v 's/\.jpg$/\_120x120.jpg/' *.jpg
mv foo/* .
rmdir foo