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