Bash:プレフィックスをサフィックスとして使用してファイル名を変更する

Bash:プレフィックスをサフィックスとして使用してファイル名を変更する

かなり簡単なことをしようとしていますが、これを実装する方法は少し慣れていません。

次のファイルセットがあり、x2_filename.pngファイルを次の形式に変換しようとしています。[email protected]

ありがとうございます!

答え1

rename適切な正規表現でこのユーティリティを使用できます。

変換が次のようになるとします。

nondigits digits underscore nondots dot anything
into
nondots atsign digits nondigits dot anything

コマンドは次のとおりです。

$ prename -n 's/([^\d]*)(\d*)_([^.]*)\.(.*)$/$3\@$2$1.$4/' *

最後の項目は*それを展開して、そのglobに一致するすべてのファイルに適用し、名前変更操作のみをシミュレートするように切り替えることで、目的の操作を実行することを-n確認できます。

答え2

お持ちの場合prenameperlDebianパッケージに付属のコマンド(スクリプト)をperl使用すると、次のことができます。

prename -n 's/(\D+)(\d+)_([^.]+)/$3\@$2$1/' *.png

例:

$ ls -1
x1_filename.png
x2_filename.png
x3_filename.png
x4_filename.png

$ prename -n 's/(\D+)(\d+)_([^.]+)/$3\@$2$1/' *.png
x1_filename.png renamed as [email protected]
x2_filename.png renamed as [email protected]
x3_filename.png renamed as [email protected]
x4_filename.png renamed as [email protected]

prename -nはい--dry-run、変更がうまくいったら実行してみてください。

prename 's/(\D+)(\d+)_([^.]+)/$3\@$2$1/' *.png

関連情報