6

今、私はこれをたくさんしています:

find * | grep py$ | xargs grep foo

少ないタイピングでこれを行うユーティリティがあることを思い出しますが、どれですか?

更新: 可能であれば、Bash シェルを使用することを好みます。

4

8 に答える 8

14

私はackが大好きです:

どちらを入力しますか?

$ grep pattern $(find . -type f | grep -v '\.svn')

$ ack pattern

于 2009-06-22T16:27:19.350 に答える
4

あなたのシェルがあなたを助けてくれるかもしれません。たとえば、zshでは、次のことができます

grep foo **/*.py

.py ファイルの数が、コマンドに許可されている引数の最大数 (64k?) を超えていない場合。ファイルのグロビングを修飾できることに注意してください。

grep foo **/*.py(mh-5)

これにより、過去 5 時間に変更されたすべての情報が得られます。

于 2009-06-22T16:21:37.510 に答える
3

ackを試しましたか。

于 2009-06-22T16:29:00.583 に答える
2

zshには再帰的なグロブがあるので、次のことができます。

grep foo **/*.py

見て、見つからない:)

更新:ああ、あなたが何かをたくさんするなら、もちろんエイリアスを作ったり、そのための関数を書いたりしても害はありません

于 2009-06-22T16:25:00.677 に答える
2

これはgrep*wink*と呼ばれます:-)

現在のディレクトリ内のすべてのpy

grep -R foo *.py

現在のすべてのファイルと任意のサブディレクトリ

grep -R foo .
于 2009-06-22T16:25:37.493 に答える
1
grep -r --include='*.py' foo *
于 2009-06-22T16:21:56.917 に答える
1
find . -name "*.py" -exec grep -H foo '{}' ';'
于 2009-06-22T16:23:01.907 に答える
0

私はあなたのfind/grepペアに非常によく似たものをよく使用しますが、たとえば.svnディレクトリ内のファイルを除いてさらに条件があります。私はこれを非常に多く行っているので、これらの呼び出しの周りにスクリプトを作成したので、「src-grep ...」を呼び出して、基本的にここで行っていることを実行させることができます。(次に、grep -Cフラグが提供されている場合は、それに渡すいくつかのコンテキスト行のオプションの拡張機能と、定義ステートメントの結果をgrepするための別のバージョンを追加しました。)

これは、再帰的なgrepよりも便利で高速です。

于 2009-07-09T00:38:56.620 に答える