我正在尝试递归搜索当前文件夹中包含的所有文件中的字符串,我正在执行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...]
那我该怎么办呢?
答案 0 :(得分:9)
假设您有find
,
find . -type f -exec grep "some string here" {} \;
另请注意,您的通配符只会匹配名称中包含点的文件;我认为这是一个错误,但如果没有,请在-name '*.*'
之前添加-exec
(或者如果您要搜索名称中包含点的目录,请将find .
更改为find *.*
,这是grep
命令实际执行的操作。
旧的DOS 8 + 3通配符*.*
将匹配所有文件,因为即使在没有扩展名的文件名中,点也是隐含的。所有文件(不以点开头)的Unix通配符只是*
。
使用xargs
或更新find
支持-exec ... +