「TRACE_WANTED」フラグを使用するファイルを見つけようとします。ただし、ファインダーが.cと.hでこのフラグを検索したくありません。ファインダーを*.cから除外するにはどうすればよいですか?および *.h ファイル。
これは私が使用する一般的なコマンドです。
find ./ -iname *.c -exec grep -iHrn TRACE_WANTED {} \;
答え1
GNUはgrep
組み込みの再帰検索からglobを除外できます。努力する:
grep -iHrn --exclude='*.c' --exclude='*.h' TRACE_WANTED
これは、コマンドと同様に、現在のディレクトリから始まり、再帰的に検索されますfind
。すべてのファイル*.c
を除外します*.h
。
答え2
*.c および *.h ファイルを除いて、TRACE_WANTED という単語を含むファイルを探すだけであれば、以下を使用する必要もありません。探す、grepだけでも操作を実行できます。
grep -r --exclude={"*.c","*.h"} TRACE_WANTED ./
デフォルトでは、bashでは引用符は必要ありませんが、zshでは必要です。
答え3
find . ! -name '*.[ch]' -type f -exec grep -l TRACE_WANTED {} +
grep
または再帰検索が利用可能な場合-r
:
grep -lr --exclude='*.[ch]' TRACE_WANTED