回答:
いくつかの試行の後、私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"
引用符で囲んでください。