findとsedで一括置換

Linuxの話。日本語の置換は未確認。
【目的】
/var/www/html/以下のすべてのファイルに対して、192.168.0.51を192.168.0.99に置換する。

【準備】
バックアップを.koreiranaidesuをつけて作るので、あらかじめこのファイルがないかをチェック。あったら違う名前にする。

【実行】

フルパス/var/www/html/以下のファイル(-type f)に対して置換する。 ファイルを直接変える(-i)。バックアップを.koreiranaidesuをつけて作る。192.168.0.51を192.168.0.99に変える。{}を”で括らないとスペースのあるファイルでうまくいかない。xargsを使わないでじっくり一個づつやる。置換しなくてもバックアップが取られるのでいっぱいあると大変。

【確認】
ほんとになくなったか調べる

成功したら*.koreiranaidesuを削除

find コマンドの使い方

上のようにすると、カレントディレクトリのすべてのファイルを表示する。 通常すべてのファイルを表示する必要はないのでここから条件をつけていって表示を絞っていく。

上のようにするとファイル名に aaa という名前が含まれるものが表示される。

上のようにすると普通のファイルのみ表示される。

上のようにすると普通のファイルで、aaaが含まれるファイルが表示される。

上のようにすると、10メガバイト以上のファイルを表示される。

上のようにすると、24時間以内に更新されたファイルを表示する。

findの引数をどんどん付け足すと見つけるファイルを絞り込める。

上のようにすると、拡張子がzipでサイズが10M以上で24時間以内に更新されたファイルを表示する。

-execを使うと、検索結果を受け取ってコマンドを実行できる。検索結果は{}で受け取る。-execの終わりは;を置く。;はシェルによって解釈されないようにエスケープしておく。

上のようにすると~で終わるファイルを~/.gomi/に移動させる。