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

  • ---

    LINEで送る
  • -

    ブックマーク
  • -

    pocket
  • -

    rss
programing image

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

しかし、ふつうの検索で使えるものが再起検索では使えないなど、知っておかないと『なんでできないの?』とあせってしまいます。

grepの再帰検索のポイントを説明します。

再帰検索のディレクトリ指定はパターンが使えない

grep -r search-string [dir | file]

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

*tmp

proc*

など。

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

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

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

でもgrepの仕様は、

ふつうのgrep検索では使える

けど、

再帰検索では使えない

です。

再帰検索で指定するディレクトリは、検索するトップディレクトリを指定する必要があるため、あいまいな指定は許されません。

それなら、次のような再帰検索はできないのか?と思うかもしれません。

パソコンをする人 上手く行った
*.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カテゴリでよく読まれている記事です。
blog image

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

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

tadtadya.com

_

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

*

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

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