晴耕雨読

work in the field in fine weather and stay at home reading when it is wet

grepコマンドで特定のディレクトリを検索対象から除外する

gitレポジトリを含むディレクトリで、grep -r による検索を行うと、.git/ 以下のファイルにも検索が入って、実行速度に影響する場合があるので、grepコマンドで特定のディレクトリを検索対象から除外する方法について説明します。

--exclude-dir を使う

特定のディレクトリを検索対象から除外するには --exclude-dir <path> と書けば良いです。 .git/ ディレクトリを除外したければ --exclude-dir .git と書きます。

grep -r --exclude-dir .git '検索文字列' .

--include と --exclude を組み合わせて使う

grep のファイル除外をする別の方法としては exclude オプションを使います。 例えば、JavaScriptファイル (*.js) を対象にしたいけど、Minifyしたファイル (*.min.js) は検索して欲しくない時は次のようにオプションを指定してあげます。

grep -r "検索文字列" . --include=*.js --exclude=*.min.js

以上です。