#author("2022-04-08T12:10:36+09:00","default:Miyashita","Miyashita")
#author("2022-04-08T12:10:58+09:00","default:Miyashita","Miyashita")
*grep コマンド メモ [#jf1ef6e9]

**ファイル中のテキスト検出 [#h5c0acce]
モジュールで分割され,ディレクトリやファイル群がたくさんあるソースコードから,ファイル内に含まれるキーワードを検出したい時に.
#codeprettify{{
grep -r "keyword" .
}}
これでカレントフォルダ(.)の階層下全て(-r)検出できる.~
keywordにスペースを含む場合は「"」でくくること.~
grepはマッチする文字列の検出であり,「*」が不要なことに注意.~
またfindコマンドと書く順番が異なる.~
以下は個人的によく使うオプション.
 -i:大文字小文字の区別なし
 -l:該当ファイルのパス・ファイル名のみ表示
 -n:パターンマッチした行数を表示
 -r:サブディレクトリも含めて再帰的に検索
 -I:バイナリファイルを無視(検索対象から除外)
また,パターンにマッチするファイルのリストを作成したいときは,ファイルのパスとファイル名さえ表示すれば良いので,
 grep -rlI keyword . >filelist.dat
#codeprettify{{
grep -rlI keyword . > filelist.dat
}}
とか実行すればOK.~
~


**指定文字列を含まない検出 [#qdca7032]
指定の文字列を含まないようなものを検出するには,-v オプションを使う.~
直下ディレクトリの中でディレクトリを検出し,その中でさらに".git"という文字列を含んだものを除外するには
#codeprettify{{
find . -type d | grep -v .git
}}
~

**正規表現で複数の文字列等を対象に検出 [#s0c931e9]
検出/除外の候補がいくつもあるときは,egrep または grep -E で正規表現を使う.~
直下ディレクトリの中でディレクトリを検出し,その中でさらに".git"と"tmp"という文字列を含んだものを除外するには
#codeprettify{{
find . -type d | grep -E -v ".git|tmp"
}}
~

Front page   Edit Diff Attach Copy Rename Reload   New List of pages Search Recent changes   Help   RSS of recent changes