2015-04-06 87 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