Linuxで特定の文字列を含むファイルを超高速に検索するコマンド

プログラミングをしていると 「特定のメソッドについて調べたいが、どのファイルに記述されているのかわからない」 というような問題にぶつかることがあります。

Linux では grep コマンドで特定の文字列を含んでいるファイルを検索できますが、対象のパスの階層が深かったりすると検索に時間がかかります。そのため ackripgrep などといった超高速に検索できる専用のツールを使うのが一般的です。

私が愛用している The Silver Searcher(ag) もそのタイプのツールです。

The Silver Searcher とは

とにかくスピードに特化したコード検索ツールで、主な特徴は次の通りです。

  • 同じ検索ツールである ack よりもはるかに速いオーダーで検索
  • .gitignore.hgignore などで特定のパターンに合致するファイルを検索対象から除外可能
  • 検索したくないリポジトリごと、検索対象から除外可能
  • ack よりも打鍵を 33%!削(MISSING)減可能8( ag という 2 文字のコマンドのため)

その他細かい説明は github リポジトリの README をご覧あれ。

導入方法

Linux

  • Ubuntu >= 13.10 (Saucy) or Debian >= 8 (Jessie)
apt-get install silversearcher-ag
  • CentOS
yum install the_silver_searcher

Mac

Mac は brew でインストールできます。

brew install the_silver_searcher

使い方

ターミナルで検索対象のディレクトリへ移動し、 ag hogehoge と打つだけです。

cd /hogehoge/hagehage
ag hogehoge

パスを指定して検索することも可能です。

ag hogehoge /PATH

その他の使い方は help で確認すると良いでしょう。

ag --help

まとめ

超高速な grep を実現するツール____The Silver Searcher(ag)__についてまとめました。やったね!