grep -r不可用;现在怎么办?

时间:2015-04-06 06:58:36

标签: shell text command-line grep

我正在尝试递归搜索当前文件夹中包含的所有文件中的字符串,我正在执行grep。但似乎这台主机上的grep太旧了。以下是它的一些用法。

>> grep -r "some string here" *.*
grep: illegal option -- r
usage: grep [-E|-F] [-c|-l|-q] [-bhinsvwx] -e pattern_list...
        [-f pattern_file...] [file...]
usage: grep [-E|-F] [-c|-l|-q] [-bhinsvwx] [-e pattern_list...]
        -f pattern_file... [file...]
usage: grep [-E|-F] [-c|-l|-q] [-bhinsvwx] pattern [file...]

那我该怎么办呢?

1 个答案:

答案 0 :(得分:9)

假设您有find

find . -type f -exec grep "some string here" {} \;

另请注意,您的通配符只会匹配名称中包含点的文件;我认为这是一个错误,但如果没有,请在-name '*.*'之前添加-exec(或者如果您要搜索名称中包含点的目录,请将find .更改为find *.*,这是grep命令实际执行的操作。

旧的DOS 8 + 3通配符*.*将匹配所有文件,因为即使在没有扩展名的文件名中,点也是隐含的。所有文件(不以点开头)的Unix通配符只是*

使用xargs或更新find支持-exec ... +

可以提高效率