0

問題がありますrename -v 's/\.jpg$/\_120x120.jpg/' *.jpg

zzr31_120x120.jpgに改名zzr31_120x120_120x120.jpg

120×120 を持たないものだけの名前を変更することをより明確にするにはどうすればよいですか? その上で、可能であれば 1 つのコマンドで作成するだけでなくjpggif1pngつのコマンドで作成するにはどうすればよいですか?

4

2 に答える 2

1

否定先読みを使用し、正規表現を使用して選択した拡張子と一致させる必要があります。

とにかく、これは私の提案です

rename -n 's/^((?:(?!_120x120).)*)\.(jpg|png|gif)$/$1_120x120.$2/' *

-n を削除して機能させます。そうしないと、名前が変更されるものだけが表示され、実際には名前が変更されません

于 2012-05-31T22:21:35.200 に答える
0

と呼ばれるものを使用する必要がありますnegative look-behind assertionsperlre(1)詳細については、ドキュメントを確認してください。使用する正確な構文を思いつくのに苦労しています。これが私の最後の努力でした:

/(.*)\K120x120\.(jpg|gif|png)/$1_120x120.$2/

簡単な答えは、最初に「適切な」ファイルを移動することです。

mkdir foo
mv *_120x120.* foo
rename -v 's/\.jpg$/\_120x120.jpg/' *.jpg
mv foo/* .
rmdir foo
于 2012-05-31T22:19:34.650 に答える