質問: grep --exclude/ - include構文を使用して、特定のファイルをgrepしないようにします。 ディレクトリツリーのテキストファイルで文字列foo=を探しています。それは一般的なlinuxマシン上にあります、私はbashシェルを持っています:grep -ircl "foo=" * ディレクトリには "foo ="にマッチする多くのバイナリファイルもあります。これらの結果は関連性がなく、検索が遅くなるので、grepにこれらのファイル(主にjpegおよびpng画像)の検索をスキップさせたいです。どうすればいいの?私は--exclude=patternと--include=patternオプションがあることを知っています、しかしパターンフォーマットは何ですか? grepのmanページはこう言います:--include=pattern recurse in directories only searching file matching pattern. --exclude=pattern recurse in directories skip file matching pattern. grep include 、 grep include exclude 、 grep exclude を検索しても、関連するものが見つかりませんでした。特定のファイルだけを扱うより良い方法があるのなら、私はそれだけです。問題のあるファイルを移動することはできません。特定のディレクトリだけを検索することはできません(ディレクトリ構造はいたるところにあり、すべてがあふれています)。また、私は何もインストールすることができないので、私は一般的なツール( grep または提案された find のような)を使用しなければなりません。
回答: git grep パフォーマンスに最適化され、特定のファイルを検索することを目的としたgit grepを使用してください。デフォルトではバイナリファイルを無視し、あなたの.gitignoreを尊重します。 git構造体で作業していないのであれば、--no-indexを渡すことでそれを使用することができます。構文の例:git grep --no-index "some_pattern" 他の例については、以下を参照してください。 git grep searchから特定のディレクトリ/ファイルを除外する方法 。 ファイル内に複数の文字列または正規表現がすべて存在するかどうかを確認します