一見単純な検索と置換複数のファイル間で


多くのメソッドが1つのファイルで単語を検索して置換するために存在しますが、複数の無関係なファイルをまたがって更新する文字列を持っているとき、あなたはどうしますか?もちろん、コマンドラインツールの力をハーネス!
まず、必要がありますfind すべてのファイルを変更します.一緒に何を効果的に検索クエリのfind 本当にあなたの想像力によって制限されます.以下はPythonファイルを見つける簡単な例です.
find . -name '*.py'
The -name で検索すると、.py , でもfind することができます他の多くのテスト条件を含む-regex テスト.ランfind --help オプションの多数を見るには.
さらに使用して検索を調整grep 変更する文字列を含むファイルだけを取得するには、次のようにします.
grep -le '\<a whale\>'
The -l オプションを使用すると、パターンを含むすべてのファイルのファイル名を指定できます-e ) それは「クジラ」にマッチします.
Vimの印象を使う:bufdo 複数のバッファ間で同じコマンドを実行し、これらのファイルのすべてを対話的に動作させることができます.
強力なプラグを差し上げましょうfind + grep vimに結果を示します.
vim `find . -name '*.py' \
-exec grep -le '\<a whale\>' {} \;`
VIMに私たちの検索を渡すためにバックチック拡張を使用して行く準備ができて複数のバッファを開きます.(Do :h backtick-expansion 詳細はvimで今、あなたはvimコマンドを適用することができます:bufdo これらのファイルの全てに対して、対話型検索や置換などのアクションを実行します.
:bufdo %s/a whale/a bowl of petunias/gce
The g “グローバル”のすべての行にパターンの出現を変更します.The e パターンが見つからなかった場合にエラーを送出します.The c オプションは、このインタラクティブになりますあなたが自信を感じている場合は、それぞれを確認せずに変更を行うには省略することができます.
すべてのバッファを通過し終えたら、完了したすべての作業を保存します.
:bufdo wq!
その後、あなたの保存された時間と労力の栄光にバスク.