题
我的代码
$ *.php | grep google
如何打印文件名和linenumbers旁边的每个匹配?
解决方案
grep google *.php
如果你想跨越许多目录:
find . -name \*.php -print0 | xargs -0 grep -n -H google
(如在注释所解释的,是-H有用的,如果xargs的只有一个剩余的文件出现后)
其他提示
您不应该这样做。
$ *.php | grep
这意味着“运行第一PHP程序,其余的名称作为通配符的参数,然后在输出运行的grep”。
它应该是:
$ grep -n -H "google" *.php
在-n
标志告诉它做的行号,和-H
标志告诉它显示即使只有文件的文件名。 grep的将默认显示文件名,如果有多个文件被搜索,但你可能要确保不管有多少匹配的文件有输出是一致的。
grep -RH "google" *.php
请看一看在ACK http://betterthangrep.com 。在你想要什么ACK相对应的是:
ack google --php
find ./*.php -exec grep -l 'google' {} \;
使用的 “人的grep” 看其他特征。
for i in $(ls *.php); do grep -n --with-filename "google" $i; done;
find . -name "*.php" -print | xargs grep -n "searchstring"
不隶属于 StackOverflow