我的代码
$ *.php | grep google
如何打印每个匹配项旁边的文件名和行号?
grep google *.php
如果你想跨越多个目录:
find . -name \*.php -print0 | xargs -0 grep -n -H google
(如评论中所述,如果 xargs 仅提供一个剩余文件,则 -H 很有用)
你不应该这样做
$ *.php | grep
这意味着“运行第一个 PHP 程序,将其余通配符的名称作为参数,然后在输出上运行 grep”。
它应该是:
$ grep -n -H "google" *.php
-n
标志告诉它做行号,标志-H
告诉它即使只有文件也显示文件名。如果搜索多个文件,Grep 将默认显示文件名,但您可能希望确保输出是一致的,无论有多少匹配文件。
grep -RH "google" *.php
请查看http://betterthangrep.com上的 ack 。ack 你正在尝试的等价物是:
ack google --php
find ./*.php -exec grep -l 'google' {} \;
使用“man grep”查看其他功能。
for i in $(ls *.php); do grep -n --with-filename "google" $i; done;
find . -name "*.php" -print | xargs grep -n "searchstring"