
ファイル内を検索するときに、サブディレクトリも含めて検索するときはgrepコマンドでオプション(-r)を使います。
しかし、ふつうならコマンドで使えるものが再起検索では使えないものがあるなど、ちょっと工夫が必要です。それをこれからご紹介します。
grep -r search-string [dir | file]
ここで重要なのが、オプション-rを使った再帰検索の場合、指定するディレクトリはパターンが使えません。
proc*
などです。
指定できるのは、ディレクトリ名の完全名かアスタリスク(*)です。
アスタリスクを指定する場合は、カレントディレクトリ下すべてを検索対象にします。
なぜ、パターンが指定できないのでしょうか?いや、使えるよ!と思うでしょう。
たしかにそうです。しかし、再帰検索では使えません。ここで指定するディレクトリは、検索するディレクトリのトップディレクトリを指定する必要があるため、あいまいな指定は許されません。
それなら、次のようなことはできないのか?と思うと思います。


など、検索対象のファイル・ディレクトリの条件を限定したり、除外したいときがあります。grepコマンドには、そのオプションが用意されています。
パターンにマッチするファイルだけ検索する
grep -r search-string [dir | file] --include=[pattern]
たとえば、PHPのソースファイルだけを検索したかったら、
を指定します。
パターンにマッチするファイルを除外して検索する
grep -r search-string [dir | file] --exclude=[pattern]
たとえば、テンポラリファイルを検索対象からはずしたい場合は、
を指定します。
パターンにマッチするディレクトリを除外して検索する
grep -r search-string [dir | file] --exclude-dir=[pattern]
たとえば、binディレクトリを検索対象からはずしたい場合は、
を指定します。
除外設定ファイルを読み込んでから検索する
grep -r search-string [dir | file] --exclude-from=[config file]
ファイルパターンを設定ファイルにまとめることもできます。
*.txt
*.dat
*.tmp
これらのオプションは、同時に指定することもできます。また、複数の条件も指定できます。
複数の条件を指定する場合は、
のように、カンマで区切って、中括弧でかこって指定します。
- オプション(-r)を使う
- 再帰検索の場合、指定するディレクトリにパターンは使えない
- 対象を限定したり除外したい場合はオプション(--include, --exclude)を使う。
Linux基本コマンドTips(9)| @IT