Мой код
$ *.php | grep google
Как я могу напечатать имена файлов и номера строк рядом с каждым совпадением?
Мой код
$ *.php | grep google
Как я могу напечатать имена файлов и номера строк рядом с каждым совпадением?
grep google *.php
если вы хотите охватить много каталогов:
find . -name \*.php -print0 | xargs -0 grep -n -H google
(как объясняется в комментариях, -H полезен, если xargs выдает только один оставшийся файл)
-print0
и xargs -0
? Какая польза?
- person Abhijeet Rastogi; 10.10.2012
Вы не должны делать
$ *.php | grep
Это означает «запустить первую программу PHP с именами остальных, обозначенными подстановочными знаками в качестве параметров, а затем запустить grep на выходе».
Так должно быть:
$ grep -n -H "google" *.php
Флаг -n
говорит ему делать номера строк, а флаг -H
говорит ему отображать имя файла, даже если есть только файл. Grep по умолчанию будет отображать имена файлов, если ищется несколько файлов, но вы, вероятно, захотите убедиться, что вывод непротиворечив, независимо от того, сколько есть подходящих файлов.
Пожалуйста, взгляните на подтверждение на http://betterthangrep.com. Эквивалент того, что вы пытаетесь сделать:
ack google --php
Используйте «man grep», чтобы увидеть другие функции.
for i in $(ls *.php); do grep -n --with-filename "google" $i; done;