ディレクトリ配下にあるファイルに記述されている文字列 hoge を bar に置換する場合。
find . -type f -print | xargs grep -l hoge | xargs sed -i "s/hoge/bar/g" ;
find、grep、sedを組み合わせて置換していきます。
それぞれコマンドの役割は下の感じ。
find . -type f -print
カレントディレクトリ内の相対パスを含むファイル名をリストアップ。
xargs grep -l hoge
hogeを含むファイルに絞り込む。
このコマンドは必要ないかも。 # ご指摘いただきましたが、タイムスタンプを変えたくない場合はこのコマンドを入れる。
でも、sed
に流し込むファイル名は置換対象ファイルのみに絞りたかったので入れている。
xargs sed -i "s/hoge/bar/g"
hoge を bar に置換。
置換時にバックアップを取得したい場合は こちら の記事も参考になると思います。
Qiitaに投稿した記事です。