この記事は、grepコマンドによる依存パッケージの調査方法についてのメモです。
GitHubのDependabotなど、依存パッケージの脆弱性警告ツールが普及しました。しかしその警告に従い、複数のリポジトリをまたいで依存パッケージを調査するのは骨の折れる作業です。
こうした状況で便利なコマンドがgrepです。grepは多くの環境に移植されていますので、使い方を一度憶えてしまえば役立つ資産となります。
grepは正規表現によりファイルを検索するUNIXコマンドです。
このコマンドを利用すれば、ファイルを横断した本文検索ができます。
% grep -lr <pattern> --include="package.json" --exclude-dir=node_modules ./*
このコマンドの内容を書き下すと、以下のようになります。
カレントディレクトリ./*
以下で、ファイル名package.json
の<pattern>
を含む行を探す。ただしディレクトリnode_modules
は除外する。
使用しているオプションは以下の通りです。
-r
: ディレクトリを再帰処理(デフォルトではディレクトリ直下のファイルを検索する)-l
: ファイル名のみを表示(デフォルトでは該当する行も同時に表示する)% grep -lrL <pattern> --include="package.json" --exclude-dir=node_modules ./*
使用例1に-L
オプションを追加すると、<pattern>
文字列を含まないファイルを検索できます。たとえばpackage.jsonにあるべきフィールドが指定されていないプロジェクトを一括で探し当てられます。
参考記事 : 特定の文字列を含まないファイルを検索する
他にも検索パターンやオプションを変更すれば、grepは様々な問題の解決に役立ちます。皆様の問題に合わせてオプションを変更してみてください。
以上、ありがとうございました。