いgrepをコードする人の多くの異なるディレクトリ?
質問
ようにPythonプログラムに使の卵(Plone).それは198ディレクトリのPythonコードかを検索したいてをデバッグしやすくなります。いい方法はありませんから検索だけます。pyファイルだけがディレクトリを避け、無関係なコードの大型バイナリファイル?
解決
find DIRECTORY -name "*.py" | xargs grep PATTERN
ところで、これを書いているので、私ははるかに優れたソリューションである、 ACK のを発見しました。
(そして、それを編集するので、私はAGを発見した)。
他のヒント
私は強く ACK に、「異種のソースコードの大きな木とプログラマを目指した」grepの代替、(推薦しますウェブサイトから)
grep -r -n "PATTERN" --include="*.py" DIRECTORY
私はまた、これらの日多くのACKを使用します。私は、関連するすべてのファイルの種類を見つけるためにそれを少し微調整しました。
# Add zcml to the xml type:
--type-add
xml=.zcml
# Add more files the plone type:
--type-add
plone=.dtml,.zpt,.kss,.vpy,.props
# buildout config files
--type-set
buildout=.cfg
# Include our page templates to the html type so we can limit our search:
--type-add
html=.pt,.zpt
# Create txt file type:
--type-set
txt=.txt,.rst
# Define i18n file types:
--type-set
i18n=.pot,.po
# More options
--follow
--ignore-case
--nogroup
重要覚えて拡張子がその構成されていない場合、ACKがファイルを見つけられないということです。利用可能なすべての種類のための "ACKの--help-タイプ" を参照してください。
私はまた、あなたがそうオムレツに使用していると仮定しますあなたは、ACK /すべての関連ファイルを検索/ grepすることができますか?
この問題はcollective.recipe.omeletteを作成するための動機でした。それはあなたがお好み検索ユーティリティを指すことができます1つのディレクトリ構造、に設定する作業からすべての卵をシンボリックリンクすることができますビルドアウトレシピです。
find <directory> -name '*.py' -exec grep <pattern> {} \;
もあります GNU idutils をあなたはをgrepしたい場合非常に非常に迅速に大規模なソースツリー内の識別子。それははmkidを実行している(との.pyファイルを無視しないようにその設定ファイルを微調整する)ことで、事前に検索データベースの構築を必要とします。 z3c.recipe.tag のあなたがビルドアウトを使用する場合、そのの世話をします。
あなたは非コマンドラインOSSソリューションを望んで念のために...
私はpycharmを使用しています。これは、ビルドアウトのためのサポートが組み込まれています。あなたは増築生成ビン/インスタンスでそれを指して、それがインスタンスで使用されるすべての卵へのプロジェクトの外部依存関係を設定します。そして、すべてのIDEのイントロスペクションとコードナビゲーション作業をうまく。後藤定義、後藤インスタンス、リファクタリングのサポート、そしてもちろんの検索ます。
、十分な答えがないという理由だけで...
あなたが定期的に開発している場合、それはPyDevはとEclipseをインストールするための努力も価値がある(またはより簡単に、Aptanaのスタジオ - 修正のEclipseで)、検索ツールがすぐそこである場合には、
。Emacs の rgrep コマンドを発見して以来、私の grep 生活はさらに満足のいくものになりました。
Plone のソースで「IPortletDataProvider」を見つけたいとします。私はします:
M-x rgrep
- Emacs は検索文字列 (IPortletDataProvider) を要求します
- ...次に、どのファイルを検索するか (*.py)
- ...次にどのディレクトリ (~/Plone/buildout-cache/eggs) かを指定します。すでにファイルを編集している場合は、デフォルトでそのファイルのディレクトリが設定されます。これは通常、まさに私が望むものです。
結果は新しいバッファに表示されます。一番上にあるのは、 find | xargs grep
Emacs が実行したコマンド。すべての一致がハイライト表示されます。標準のテキスト検索コマンドを使用してバッファを検索できます。何よりも、一致したファイルで Enter キーを押す (またはクリックする) と、そのファイルを開くことができます。
なかなかいい働き方ですね。思い出す必要がないのが気に入っています find | xargs grep
引数シーケンスは必要ありませんが、必要な場合にはすべての機能が利用できます。
OpenGrokは、ソースの検索やナビゲーションのための優れた選択肢です。 Javaの上で動作し、しかします。
のようなものがあったことを望みます