我想显示包含字符串CHAR * getenv的所有文件名,其中getenv是一个函数。
我正在使用此查询
find . -type f -exec grep -l "CHAR * getenv" {} \;
但它没有提供所需的输出。它显示的文件名是字符串CHAR getenv但不是CHAR * getenv。
答案 0 :(得分:1)
find . -type f -exec grep -l "CHAR \* getenv" {} \;
或
grep -rl "CHAR \* getenv" *
你需要转义*,因为它意味着0或更多的前进字符(在这种情况下是空格)
答案 1 :(得分:0)
使用grep -F防止将搜索字符串视为正则表达式。
find . -type f -exec grep -lF "CHAR * getenv" {} \;
答案 2 :(得分:0)
问题是bash扩展在grep命令执行之前发生:所以你的行转换为find . -type f -exec grep -l CHAR smt getenv {} \; find . -type f -exec grep -l CHAR smt2 getenv {} \;.
用单引号替换双引号应该可以解决问题,因为bash扩展不会发生。