Panda Noir

JavaScript の限界を究めるブログでした。最近は幅広めに書いてます。

全文検索・ファイル名検索する手法

全文探索・ファイル名検索はプログラマにとって日常動作ですよね。でもオプションがわからなかったりして一々調べなおしがちです。そんなことないか。

というわけで今回はシーン別に検索をする方法をまとめてみました。Ubuntu 17.10でのみ検証を行いました。OS・バージョンが異なる場合、使えないオプションがあるかもしれません。

  1. ファイル名を検索する
  2. 全文探索をする
  3. 全文探索をするが、マッチしたファイル名のみ表示する
  4. 特定ディレクトリを除いて検索する
  5. 特定ファイルを除いて検索する

ファイル名を検索する

find -name "*.js"

現在のディレクトリ以下を再帰的に検索します。

全文探索をする

全文探索の基本はgrepコマンドです。最近はagというツールも人気なので、あわせて紹介します。

現在のディレクトリ以下で「hoge」という単語が含まれるファイルを検索します。

$ grep "hoge" ./* -R
$ ag "hoge"

マッチしたファイル名のみ表示する

$ grep "hoge" ./* -R -0
$ ag -l "hoge"

特定ディレクトリを除いて検索する

ここからはファイル名検索、全文検索まとめて書いていきます。

.gitディレクトリを除いて検索します。

$ find -type f -name "*.js" -not -type d -name ".git"
$ grep "hoge" ./* -R | grep -v ".git"
$ grep "hoge" ./* -R --exclude-dir ".git"
$ ag "hoge" --ignore-dir ".git"

agに関しては.gitignoreや.agignoreに除外対象ファイルを書いておくと便利です。

特定ファイルを除いて検索する

以下ではindex.htmlを除外するケースを考えます。

$ find -type f -name "*.html" -not -type f -name "index.html"
$ grep "hoge" ./* -R | grep -v "index.html"
$ grep "hoge" ./* -R --exclude "index.html"
$ ag "hoge" --ignore "index.html"