Имена файлов и белья для матчей Кота и Грепа - PullRequest
4 голосов
/ 26 февраля 2009

Мой код

$  *.php | grep google

Как можно распечатать имена файлов и номера белья рядом с каждым совпадением?

Ответы [ 7 ]

14 голосов
/ 26 февраля 2009
grep google *.php

, если вы хотите охватить много каталогов:

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

(как объяснено в комментариях, -H полезно, если xargs предлагает только один оставшийся файл)

5 голосов
/ 26 февраля 2009

Вы не должны делать

$ *.php | grep

Это означает, что «запустите первую программу PHP, указав в качестве параметров имя остальных символов, а затем запустите grep для вывода».

Должно быть:

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

Флаг -n говорит ему делать номера строк, а флаг -H указывает ему отображать имя файла, даже если есть только файл. Grep по умолчанию будет показывать имена файлов, если выполняется поиск по нескольким файлам, но вы, вероятно, захотите убедиться, что выходные данные соответствуют друг другу, независимо от количества совпадающих файлов.

2 голосов
/ 09 апреля 2010

Пожалуйста, взгляните на ack на http://betterthangrep.com. Эквивалент того, что вы пытаетесь:

ack google --php
2 голосов
/ 06 апреля 2010
grep -RH "google" *.php
1 голос
/ 06 апреля 2010
find ./*.php -exec grep -l 'google' {} \; 
0 голосов
/ 14 сентября 2009
find . -name "*.php" -print | xargs grep -n "searchstring"
0 голосов
/ 26 февраля 2009

Используйте "man grep", чтобы увидеть другие функции.

for i in $(ls *.php); do  grep -n --with-filename "google" $i; done;
...