我想显示包含字符串 CHAR * getenv 的所有文件名,其中 getenv 是一个函数。
我正在使用这个查询
find . -type f -exec grep -l "CHAR * getenv" {} \;
但它没有提供所需的输出。它显示带有字符串 CHAR getenv 但不是 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" {} \;
问题是 bash 扩展发生在 grep 命令执行之前:所以你的行被转换成find . -type f -exec grep -l CHAR smt getenv {} \; find . -type f -exec grep -l CHAR smt2 getenv {} \;.
用单引号替换双引号应该可以解决问题,因为那样 bash 扩展不会发生。