
かなり簡単なことをしようとしていますが、これを実装する方法は少し慣れていません。
次のファイルセットがあり、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
お持ちの場合prename
perl
Debianパッケージに付属のコマンド(スクリプト)を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