0

我想显示包含字符串 CHAR * getenv 的所有文件名,其中 getenv 是一个函数。

我正在使用这个查询

find . -type f -exec grep -l "CHAR * getenv" {} \;

但它没有提供所需的输出。它显示带有字符串 CHAR getenv 但不是 CHAR * getenv 的文件名。

4

3 回答 3

1
find . -type f -exec grep -l "CHAR \* getenv" {} \;

或者

grep -rl "CHAR \* getenv" *

您需要转义 * 因为它表示 0 个或更多的后续字符(在本例中为空格)

于 2012-07-23T06:54:46.447 回答
0

使用 grep -F 防止搜索字符串被视为正则表达式。

find . -type f -exec grep -lF "CHAR * getenv" {} \;
于 2012-07-23T06:52:28.637 回答
0

问题是 bash 扩展发生在 grep 命令执行之前:所以你的行被转换成find . -type f -exec grep -l CHAR smt getenv {} \; find . -type f -exec grep -l CHAR smt2 getenv {} \;. 用单引号替换双引号应该可以解决问题,因为那样 bash 扩展不会发生。

于 2012-07-23T06:56:33.240 回答