使用sedするfindの代わりに、grep
まず第一に、私はを採用するのfindではなく、grep3つの正当な理由からこれを採用します。
findより正確なファイル選択が可能になります。例えば、grep -r string *.txt、現在のディレクトリにのみファイルを生成します。サブディレクトリ内のものではありません。
find-exec全体の必要性を排除する強力なオプションが付属しています--null … |xargs 0構成。
- オプションは、アクセスすることができないファイルで時間を無駄に防ぐことができます。
-readable-writablefind
キャプチャテスト
ただし、grep何がキャプチャされるかを確認する最初のテストに役立ちます。
$ find . -exec grep term1 {} \;
より具体的には:
$ find . -type f -name '*.txt' -readable -writable -exec grep term1 {} \;
ドライラン
次に、ドライランに進みsedます。このsedオプション-nは同義語で--quietありp、sed式の最後に現在のパターンスペースが出力されます。
$ find . -exec sed -n 's/term1/term2/gp' {} \;
より具体的には:
$ find . -type f -name '*.txt' -readable -writable -exec sed -n 's/term1/term2/gp' {} \;
実行
すべてがうまく見える場合は、交換することにより決定的なコマンドを発行するsedオプションを-nすることによって-i、「代わりに」のためと除去することでp終わり。
$ find . -exec sed -i 's/term1/term2/g' {} \;
より具体的には:
$ find . -type f -name '*.txt' -readable -writable -exec sed -i 's/term1/term2/g' {} \;
もっと find例
その他のfind例については、こちらをご覧ください。