在unix中搜索字符串

时间:2012-07-23 06:48:59

标签: unix command find

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

我正在使用此查询

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

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

3 个答案:

答案 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扩展不会发生。