Интерфейс программирования Linux Michael Kerrisk
Обратите внимание, что автор является текущим специалистом по обслуживанию страниц справочника Linux. И это, это еще не отсутствует, таким образом, я не могу на самом деле сказать, насколько хороший это, но я считал сообщения в блоге об этом, и это походит на хорошую книгу. (и он - специалист по обслуживанию страниц справочника, и это главным образом правильно написано, и он должен знать свой материал),
Править: книга теперь отсутствует.
http://blog.man7.org/2009/07/whats-book-about.html
ack делает что-то подобное по умолчанию. можно использовать
$ ack blah
path/to/blah
16: blah blah
19: blah blah blah
path/to/more/blah
21: blahness
Если Вы просто хотите имена файлов, которые соответствуют Вам, может сказать ack -l
. ack -lc
даст Вам количество соответствий на файл.
Grep имеет опции распечатать просто имена файлов, или просто имена файлов и количества соответствия или согласующие отрезки длинной линии (возможно с именами файлов и номерами строки), но не уплотнить несколько соответствий на одной строке.
Можно отфильтровать вывод grep или использовать другой инструмент, такой как awk.
find . -type f -exec awk 'FNR==1 {if (found) print ""; found=0}
/PATTERN/ { if (!found) printf("%s", FILENAME);
printf(" %d", FNR);
found=1 }
END {if (found) print ""}' {} +
grep -rins <pattern> *
Это делает то, что Вы ищете?
В случае, если у Вас есть более сложный шаблон, например, при использовании egrep
, могло бы быть полезно использовать egrep -rinos <pattern> *
вместо этого.
Для дальнейшего увеличения удобочитаемости добавить --color
к списку параметров. Лично, у меня есть это в моем .zshrc
:
export GREP_OPTIONS="--color"
если Вы хотите искать полную древовидную попытку
find . -exec grep -n blah {} /; -ls
или делает подобный
find . -exec grep -n blah {} /; -print
grep
-H
тег включает имя файла, grep
тег-n печатает номер строки. Если Вы хотите только перечислить первое соответствие и имя файла, можно использовать -l
.
Для исключения дополнительной информации, Вы могли передать по каналу к sed
при получении и номера строки и имени файла Вы могли передать по каналу к sed
.