回答:
いくつかの試行の後、私grep -irn 'string' --include '*.h'はより便利だと思います
foobar.h現在のディレクトリで呼び出されるファイルを作成して、もう一度試してください。
Sのら(オン)SHエルオプトイオンglobstarのコマンドを使用して、
shopt -s globstar
これにより**、ファイル名コンポーネントとして、ここおよび以下すべてを意味します。つまりpath/**、pathディレクトリ
とそのサブディレクトリ内のすべてを意味します。(./ここに入力する必要はありません。)次に使用できます
grep -in "string" path/**/*.h
以下のすべての.hファイルを検索しますpath。
あなたは、することができますuが持つオプションをNSET shopt -u。
find /path -iname "*.h" -exec grep -inH "string" "{}" \;
-exec〜+もいいです。
"string"はあなたの答えに含めるのを忘れていました!
マシンに何かをインストールできる場合は、ackを使用することをお勧めします。
必要なことを正確に行うことができます。ユースケースでは、次のことができます。
# Depending of your system, you have to use one or the other
ack --hh -i string path
ack-grep --hh -i string path
ネイティブにサポートされているファイルフィルターを見つけるには、コマンドを実行しack --help=typeます。
これはどうですか?
find -L ./path -name "*.h" -exec grep -in "string" {} \;
説明:
findコマンドに置き換えられますfindコマンドの結果を表しますfindして-exec、これは、エンド・オブ・コマンド指定子です"*.h"ますか?私はそれが必要であると思っていたでしょう'*.h'
"*.h"引用符で囲んでください。