linux上で文字列の一括置換をしたいことが多々ありますが、
コマンドを毎回忘れそうになるので備忘録的に記載します。
1 |
grep -rl 'before_text' ./ | xargs sed -i -e 's/before_text/after_text/g' |
grepオプション
-r : 下層も検索
-l : 検索した結果にファイル名のみを表示
sed
-i(–in-place) : 上書き
-e : 指定したスクリプト(条件式)で変換処理を行う
これでカレントディレクトリ以下のファイル全てを対象として、
指定の文字列を任意の文字列に置換します。
grepでカレントディレクトリ以下
カレントディレクトリのみ置換したい場合や、
対象ファイルを指定する場合は、grep の ./ を任意の対象に変更する。