[perl] ファイル名を一括で変換する

ファイル名を正規表現で一括変換したい時ってたまにあります。 * 提供されたファイルの名称がおかしい * iOSのプロジェクトに入れるファイル名に変換したい(@2xとかしたい) perlのワンライナーで一括変換できます。 ```perl `gutter:false; perl -e 'for(glob("*")){$old=$_;s/HOGE/FOO/;rename($old,$_);}' ``` カレントディレクトリの全てのファイルに対して s/HOGE/FOO/をした結果に置き換えます。 glob()の中はグロブでファイルを指定可能です。 ".png"ならカレントディレクトリのピングファイルが対象になります。 注意点としては、置き換えの中に@があったらエスケープが必要です。 s/hogehoge/foo\@2x/ あと、一応バックアップを取ってからやりましょう。 ### 後方参照を使って置き換える 123jpg とドットをつけ忘れてしまったファイルを123.jpgに変換したいような時は... ```perl `gutter:false; perl -e 'for(glob("*jpg")){$old=$_;s/([0-9]+)jpg/$1\.jpg/;rename($old, $_);}' ``` 括弧で囲って$1, $2...で置き換えます。

0 件のコメント :

コメントを投稿