#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" }} ~