grep
実装が Perl 構文 (フラグ、たとえば Linux では通常利用可能) をサポートしている場合、-P
単語境界などの追加機能を利用できます。
$ grep -Pr '\bcommon\.'
ところで:
grep -r
find
ロブの例のように、以前にパイプされたコマンドよりもはるかに遅くなる傾向があります。さらに、見つかったファイル名に空白が含まれていないことが確実な場合は、次を使用するxargs
方がはるかに高速です-exec
。
$ find . -type f -name '*.java' | xargs grep -P '\bcommon\.'
または、Tim の例に適用されます。
$ find . -type f -name '*.java' | xargs sed -i.bak 's/\<common\./etc.common./'
後者の例では、変更された各ファイルの *.bak バックアップを作成した後に置換が行われることに注意してください。このようにして、コマンドの結果を確認してからバックアップを削除できます。
$ find . -type f -name '*.bak' | xargs rm
oopsie を作成した場合は、次のコマンドで以前のバージョンが復元されます。
$ find . -type f -name '*.bak' | while read LINE; do mv -f $LINE `basename $LINE`; done
もちろん、ファイル名とパスに空白がないかどうかわからない場合は、find
の-exec
パラメーターを介してコマンドを適用する必要があります。
乾杯!