今、私はこれをたくさんしています:
find * | grep py$ | xargs grep foo
少ないタイピングでこれを行うユーティリティがあることを思い出しますが、どれですか?
更新: 可能であれば、Bash シェルを使用することを好みます。
あなたのシェルがあなたを助けてくれるかもしれません。たとえば、zshでは、次のことができます
grep foo **/*.py
.py ファイルの数が、コマンドに許可されている引数の最大数 (64k?) を超えていない場合。ファイルのグロビングを修飾できることに注意してください。
grep foo **/*.py(mh-5)
これにより、過去 5 時間に変更されたすべての情報が得られます。
ackを試しましたか。
zshには再帰的なグロブがあるので、次のことができます。
grep foo **/*.py
見て、見つからない:)
更新:ああ、あなたが何かをたくさんするなら、もちろんエイリアスを作ったり、そのための関数を書いたりしても害はありません
これはgrep*wink*と呼ばれます:-)
現在のディレクトリ内のすべてのpy
grep -R foo *.py
現在のすべてのファイルと任意のサブディレクトリ
grep -R foo .
grep -r --include='*.py' foo *
find . -name "*.py" -exec grep -H foo '{}' ';'
私はあなたのfind/grepペアに非常によく似たものをよく使用しますが、たとえば.svnディレクトリ内のファイルを除いてさらに条件があります。私はこれを非常に多く行っているので、これらの呼び出しの周りにスクリプトを作成したので、「src-grep ...」を呼び出して、基本的にここで行っていることを実行させることができます。(次に、grep -Cフラグが提供されている場合は、それに渡すいくつかのコンテキスト行のオプションの拡張機能と、定義ステートメントの結果をgrepするための別のバージョンを追加しました。)
これは、再帰的なgrepよりも便利で高速です。