2015-04-06 135 views
2

我想递归搜索当前文件夹中包含的所有文件中的字符串,我正在执行grep。但是这个主机上的grep似乎太旧了。这里有一些用法。grep -r不可用;现在怎么办?

>> 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...] 

那么我应该怎么做我想要的?

回答

8

假设你有find

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

还请注意,您的通配符只能匹配的文件,其名称包含一个点;我认为这是一个错误,但如果没有,-exec前添加-name '*.*'(或更改find .find *.*如果你的意思是搜索目录名称中包含一个圆点,这是你的grep命令实际上做的)。由于点即使在没有扩展名的文件名是隐含

旧的DOS 8 + 3通配符*.*会匹配所有文件。所有文件(不以点开头)的Unix通配符只是*

这可以作出更多的高效与xargs或与支持-exec ... +

+0

或使其'找到一个新的find。 -type f -exec grep“some string here”{}/dev/null \;'如果您希望匹配文件名前面加上匹配。 – 2015-04-06 07:10:32

+0

屏幕只是闪烁,我看不到列出文件名的结果。 到目前为止,我设法使用以下语句: grep -F Ma/Dir/* 在所需的Dir中搜索字符串“Ma”。 – 2015-04-06 07:13:54

+0

发现这个奇特的东西; d [www.computerhope.com(https://www.computerhope.com/unix/ugrep.htm) – 2015-04-06 07:19:58