オプションを混乱しがちなので、まとめてみました。find、ag、grep についてまとめてあります。
※ OSのバージョン、コマンドのバージョンによっては使えないオプションがある場合があります。
ファイル名を検索する
$ find -name "*.js" $ ag -g "\.js$" $ ag -g \\.js$
全文検索
$ grep "hoge" ./* -Rsh $ ag "hoge" $ ag "hoge" --depth 0
マッチしたファイルのファイル名のみ表示
$ 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"
特定ファイルを除いて検索する(例: 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"