文字列CHAR*getenvを含むすべてのファイル名を表示したいのですが、getenvは関数です。
私はこのクエリを使用しています
find . -type f -exec grep -l "CHAR * getenv" {} \;
しかし、それは望ましい出力を与えていません。文字列CHARgetenvのファイル名を表示していますが、CHAR*getenvは表示していません。
find . -type f -exec grep -l "CHAR \* getenv" {} \;
また
grep -rl "CHAR \* getenv" *
*は、先行する文字(この場合はスペース)が0個以上あることを意味するため、エスケープする必要があります。
grep -Fを使用して、検索文字列が正規表現として扱われないようにします。
find . -type f -exec grep -lF "CHAR * getenv" {} \;
問題は、grepコマンドが実行される前にbash展開が行われることです。したがって、行が変換されます。find . -type f -exec grep -l CHAR smt getenv {} \; find . -type f -exec grep -l CHAR smt2 getenv {} \;.
二重引用符を一重引用符に置き換えると、bash展開が行われないため、問題が解決するはずです。