7

我的代码

$  *.php | grep google

如何打印每个匹配项旁边的文件名和行号?

4

7 回答 7

22
grep google *.php

如果你想跨越多个目录:

find . -name \*.php -print0 | xargs -0 grep -n -H google

(如评论中所述,如果 xargs 仅提供一个剩余文件,则 -H 很有用)

于 2009-02-26T20:07:18.543 回答
6

你不应该这样做

$ *.php | grep

这意味着“运行第一个 PHP 程序,将其余通配符的名称作为参数,然后在输出上运行 grep”。

它应该是:

$ grep -n -H "google" *.php

-n标志告诉它做行号,标志-H告诉它即使只有文件也显示文件名。如果搜索多个文件,Grep 将默认显示文件名,但您可能希望确保输出是一致的,无论有多少匹配文件。

于 2009-02-26T20:16:40.677 回答
4
grep -RH "google" *.php
于 2010-04-06T01:45:37.267 回答
2

请查看http://betterthangrep.com上的 ack 。ack 你正在尝试的等价物是:

ack google --php
于 2010-04-08T22:40:06.587 回答
1
find ./*.php -exec grep -l 'google' {} \; 
于 2010-04-05T21:21:24.347 回答
0

使用“man grep”查看其他功能。

for i in $(ls *.php); do  grep -n --with-filename "google" $i; done;
于 2009-02-26T20:09:21.770 回答
0
find . -name "*.php" -print | xargs grep -n "searchstring"
于 2009-09-14T12:27:03.707 回答