同じコードベースを何度もgrepしていることに気づきました。うまく機能しますが、各コマンドは約10秒かかるので、もっと速くする方法を考えています。
では、grep
はある種のインデックスを使用できますか?インデックスはおそらく複雑な正規表現には役立たないことは理解していますが、私は主に非常に単純なパターンを使用しています。この場合、インデクサーは存在しますか?
編集:ctagsなどについては知っていますが、全文検索をしたいと思います。
cscope はどうですか、これはあなたの靴と一致しますか?
次のコードを検索できます。
recoll 、 swish-e 、 sphinx などのツールがありますが、それらがあなたの検索条件の種類をサポートできるかどうかを確認する必要があります必要。
Recoll
Recollは、Unix/Linux用の個人用全文検索ツールです。
Swish-e
Swish-eは、Webページやその他のファイルのコレクションにインデックスを付けるための、高速で柔軟性のある無料のオープンソースシステムです。
スフィンクス
Sphinxを使用すると、SQLデータベース、NoSQLストレージ、またはファイルのみに保存されているデータのバッチインデックス作成と検索をすばやく簡単に行うことができます。
Grepがあなたが説明するのと同じくらい遅いことに驚いていますが、検索されるファイルの数を減らすことはできますか?たとえば、(プロジェクト内の多くの実行可能ファイルのうち)1つの実行可能ファイルのソースファイルのみを検索する必要がある場合、そのプログラムのソースファイルを一覧表示するコマンドからgrepに名前をフィードします。
grep expression `sources myprogram`
sources
は私の開発環境に固有のプログラムですが、同等のものがある(または構築できる)可能性があります。
私はあなたが次のような明白なテクニックを試したことがあると思います
find /foo/myproject -name "*.c" -exec fgrep -l searchtext
suggestion を読みましたが、現在のgrep
の-P
オプションを使用すると検索を大幅に高速化できます。
grep、いいえ。しかし、インデックスを使用し、コードベースを対象としたプログラムがいくつかあります。 ctags
(vimで提供されるバージョンがあります)、etags
(emacsでの使用を目的としています)、global
(エディターからより独立しています)は私が考えているものです今頃ですが、おそらく他にもあります。
コードベースをRAMディスクにコピーできます。