Simple, Slowly

ブログを引っ越ししました。http://48.jp

findとPerlを使った一括置換で作業効率をあげよう

findとPerlを使った一括置換が便利なので紹介します。
一括置換をすることで、作業効率が数倍アップします。人の手が入るのを極力減らすことで、ミスも防げます。自動化できるところは、極力自動化していきましょう。


find . -type f -name '*' | xargs perl -i -pe 's/りんご/バナナ/g'
カレントディレクトリの全てのファイルより、りんごをバナナに一括置換します。


2つのコマンドをパイプでつなげています。

1 find . -type f -name '*'
置換するファイルを抽出します。

2 xargs perl -i -pe 's/りんご/バナナ/g'
xargsに引数(ファイル名)が入ってきます。そのファイルを対象にりんごをバナナに置換します。


その他の例です。

find /home/hoge/ -type f -name '*' | xargs perl -i -pe 's/りんご/バナナ/g'
ディレクトリ指定


find . -type f -name 'index.php' | xargs perl -i -pe 's/りんご/バナナ/g'
ファイル名指定


find . -type f -name '*.php' | xargs perl -i -pe 's/りんご/バナナ/g'
拡張子指定


注意点としては、失敗したときの影響が大きいです。
以下のように段階を踏むことをおすすめします。

  1. findのみ実行して対象ファイルを確認
  2. ファイル名指定をして1ファイルのみ置換
  3. 中身を確認して想定通りに置換できていたら、範囲を広げて置換