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'
拡張子指定
注意点としては、失敗したときの影響が大きいです。
以下のように段階を踏むことをおすすめします。
- findのみ実行して対象ファイルを確認
- ファイル名指定をして1ファイルのみ置換
- 中身を確認して想定通りに置換できていたら、範囲を広げて置換