🔎
ディレクトリ配下のファイルをキーワード検索して一括置換する
結論
ディレクトリ配下のファイルをキーワード検索して一括置換する
ag -l 'keyword' | xargs perl -pi -e 's/old/new/g'
解説
キーワード検索
全文検索を使います。
ag -l 'keyword'
-l
オプションは、マッチしたファイル名だけを表示します。デフォルトだと、ファイルのキーワードの入っている行を表示してくれます。
私はSilver Searcherを使っていますが、別のものを使っても良いと思います。
ファイルごとに置換処理を実行
xargs
で ag
の出力(ファイル名)を perl
に引数として渡して、 perl で置換を実行します。
xargs perl -pi -e 's/old/new/g':
-
-p
: 各行を処理し、出力 -
-i
: ファイルをその場で編集 -
-e
: Perl コードを実行 -
's/old/new/g'
: old を new に置換
MacにはPerl 5が入っているので、インストール不要でありがたい。
perl --version
This is perl 5, version 34, subversion 1 (v5.34.1) built for darwin-thread-multi-2level
...
あとがき
単一のファイルであれば、Vimなどで :%s/old/new/g
すればいいですが、数が多いと面倒なので、一括でやるためのスクリプトでした。
変更するときは、Silver Searcherで変更される対象を見ておくと良いと思います。
ag 'keyword'
Discussion