Linux grep: 再帰的にファイル内を検索する

他言語サイト
us us
プログラミングの画像

ファイル内を検索するときに、サブディレクトリも含めて検索するときはgrepコマンドでオプション(-r)を使います。

しかし、ふつうならコマンドで使えるものが再起検索では使えないものがあるなど、ちょっと工夫が必要です。それをこれからご紹介します。

grep -r search-string [dir | file]

ここで重要なのが、オプション-rを使った再帰検索の場合、指定するディレクトリはパターンが使えません。

*tmp
proc*

などです。

指定できるのは、ディレクトリ名の完全名かアスタリスク(*)です。

アスタリスクを指定する場合は、カレントディレクトリ下すべてを検索対象にします。

なぜ、パターンが指定できないのでしょうか?いや、使えるよ!と思うでしょう。

たしかにそうです。しかし、再帰検索では使えません。ここで指定するディレクトリは、検索するディレクトリのトップディレクトリを指定する必要があるため、あいまいな指定は許されません。

それなら、次のようなことはできないのか?と思うと思います。

 
パソコンをする人

*.phpだけを検索対象にしたい。
 
パソコンをする人

binディレクトリは検索対象からはずしたい。

など、検索対象のファイル・ディレクトリの条件を限定したり、除外したいときがあります。grepコマンドには、そのオプションが用意されています。

パターンにマッチするファイルだけ検索する

grep -r search-string [dir | file] --include=[pattern]

たとえば、PHPのソースファイルだけを検索したかったら、

--include=*.php

を指定します。

パターンにマッチするファイルを除外して検索する

grep -r search-string [dir | file] --exclude=[pattern]

たとえば、テンポラリファイルを検索対象からはずしたい場合は、

--exclude=*.tmp

を指定します。

パターンにマッチするディレクトリを除外して検索する

grep -r search-string [dir | file] --exclude-dir=[pattern]

たとえば、binディレクトリを検索対象からはずしたい場合は、

--exclude-dir=bin

を指定します。

除外設定ファイルを読み込んでから検索する

grep -r search-string [dir | file] --exclude-from=[config file]

ファイルパターンを設定ファイルにまとめることもできます。

除外設定ファイルの内容
*.txt
*.dat
*.tmp

 

これらのオプションは、同時に指定することもできます。また、複数の条件も指定できます。

複数の条件を指定する場合は、

--include={*.php,*.txt}

のように、カンマで区切って、中括弧でかこって指定します。

  • オプション(-r)を使う
  • 再帰検索の場合、指定するディレクトリにパターンは使えない
  • 対象を限定したり除外したい場合はオプション(--include, --exclude)を使う。
最近ITカテゴリでよく読まれている記事です。
post-cta-image
blog image

ドメイン取得の意味が分からない人へ。王道の方法を紹介します。

ドメインの登録業者を選ぶのに悩む必要はないです。サイトを簡単に早く公開するには全くいらないことで、むしろ邪魔です。『お名前.com』というサービスは必ず耳にします。そのお名前.comのメリットとデメリットと一緒に、ドメインの意味が分からない人が一番失敗しないドメインの取得方法を紹介します。

tadtadya.com

_

SNSでも記事を配信しています。
コメントを残す

*

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

この記事を気に入ったらぜひシェアも!!