article-thumbnail

サーバー内で複数のファイルに対して文字列置換を行う

カテゴリ: Linux

タグ: CentOS,command,文字列置換,grep,xargs

2020-09-30 03:20:56

【概要】

サーバー内に存在する複数のファイルに対して特定の文字列を検索し、かつ置換を行います。

ファイル内に存在する文字列の検索やファイル名の検索をしたい場合は下記のドキュメントを参考にしてみて下さい。

サーバー内にあるファイル名とファイル内容を検索する方法


【詳細】

・構文

grep -l '置換対象文字列' ./* | xargs sed -i -e 's/置換対象文字列/置換後の文字列/g'


・例文

現在居るディレクトリのファイル全てに対して「yahoo.co.jp」の文字列を「google.com」に変更します。

grep -l 'yahoo.co.jp' ./* | xargs sed -i -e 's/yahoo.co.jp/google.com/g'


現在居るディレクトリ内に存在するディレクトリ内部の全てのファイルに対して置換を行います。

grep -l 'yahoo.co.jp' ./*/* | xargs sed -i -e 's/yahoo.co.jp/google.com/g'


Cf. 文字列検索

上記例文の通りに置換を実行した場合、対象パスに存在するファイルは全て置き換えられたことになります。

ここでは例文に沿って「yahoo.co.jp」を検索する例文を記載します。

置換した文字列が出力されなければ置換成功となります。

・構文

grep -rni "検索文字列" .


・例文

grep -rni "yahoo.co.jp" .