grepコマンドとは、linuxのコマンドです。
基本はファイルの中の「文字列(パターン)」が含まれている行を表示するコマンドです。
#grepコマンドを使う場面
・ファイルの中に特定の文字が含まれている行を抽出する時
・文字列がどのファイルにあるかを探す時
##基本の使い方
$grep [オプション] 文字列 ファイル名
##よく使う方法
例1 errorという文字がある全ファイルを抽出する
$ grep error ./*
※複数のファイルから検索するためにワイルドカード(*)を利用します。
例2 postディレクトリの中にある全てのerrorという文字列を抽出する
grep error post/*
例3 現在いるディレクトリは以下の全ファイルからerrorがあるファイルを検索する。なお、
grep -rl error .
※最後のドットは現在いるディレクトリ配下の全ファイルが検索対象という意味
※-rlオプションはディレクトリの中も検索し、結果はファイル名のみ表示します。
複数の文字列を探す方法
①②ともに含まれているファイルを探す
grep ①検索文字列 ファイル名 | grep ②検索文字列
##よく使うgrepコマンドのオプション
-C
検索結果に一致した箇所から前後に指定した行数表示する
-i
大文字と小文字を区別せず検索する
-e
一致処理に指定した正規表現を使う
$ grep –e p –e e post/*
【補足】-eオプションは一致処理に指定した正規表現を行うオプションだが、実際には、または(or)の検索を行うときに使われる。
ちなみに上記コマンドは、-eオプションを利用し、postディレクトリ内のファイルすべての中から小文字のp、またはeのいずれかを検索できるようにするコマンドです。
-v
一致しないものを検索する
-l
検索結果にファイル名のみ表示する
【使用用途】ファイルのリストを作りたい時
-r
ディレクトリ内も検索対象とする
例 postディレクトリ内のさらに下層のディレクトリ内のファイルすべての中からaの文字を検索するコマンド
$ grep -r a post/*
・特定のディレクトリを除く場合
現在いるディレクトリから cartの文字が入っているディレクトリを検索する方法
その際に、vendorディレクトリを除いて検索しております。
grep -rl cart ./ --exclude-dir=vendor
vendorとstorageディレクトリを除いております。
grep -rl cart ./ --exclude-dir={vendor,storage}
grepコマンドは使いこなせないと厳しいです。
少しでもご参考になれば幸いです。
参考記事
https://qiita.com/YASU_ojisan/items/8225c87acb4e1468dc90