grepで.svnディレクトリを除外して再帰検索

すごく久しぶりの日記。論文とかで忙しかったので。
前々からSubversionで管理されているディレクトリ以下を再帰的にgrepすると、Subversionの管理ディレクトリ(.svn)以下のファイルまでマッチされちゃってていやだったんだ。まぁ、普段はEclipseで開発しているからターミナルからgrepを打つことは少なかったんだけど。で、時間もできたので、今日grepコマンドで再帰検索したときに、Subversion管理ディレクトリ以下は除外する方法を調べたので、そのメモ。
結論から言うと、以下のようにgrepコマンドを入力すればよい。

$ rgrep --exclude=*.svn* TODO .

このコマンドを実行すると、カレントディレクトリ以下を再帰的に、TODOと言う文字列を含むファイルを検索してくれる。このとき「--exclude」オプションで指定されているように、ファイルのパス名に「.svn」を含むファイルは除外される。こうすることで、Subversion管理ディレクトリ以下のファイルは全て除外される。動作確認はUbuntu 6.10で行なった。
最初、.svnディレクトリさえ除外すればよいものと思い、次のように実行していたんだけど、うまく除外してくれなかったんだ。

$ rgrep --exclude=.svn TODO .

まぁ、マニュアルを読んでみると、「--exclude=PATTERN」てことで、正規表現を指定しなくちゃいけないわけで、このように設定すると「.svnという名前のファイルは除外する」ってことになり、きちんと動作しないわけだけど。