Имена файлов и номера строк для совпадений cat и grep

StackOverflow https://stackoverflow.com/questions/592194

  •  09-09-2019
  •  | 
  •  

Вопрос

Мой код

$  *.php | grep google

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

Это было полезно?

Решение

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 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"
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top