Как я могу рекурсивно искать каталоги шаблон и просто распечатать имена файлов и номера строки

Интерфейс программирования Linux Michael Kerrisk

Обратите внимание, что автор является текущим специалистом по обслуживанию страниц справочника Linux. И это, это еще не отсутствует, таким образом, я не могу на самом деле сказать, насколько хороший это, но я считал сообщения в блоге об этом, и это походит на хорошую книгу. (и он - специалист по обслуживанию страниц справочника, и это главным образом правильно написано, и он должен знать свой материал),

Править: книга теперь отсутствует.

http://blog.man7.org/2009/07/whats-book-about.html

http://www.man7.org/tlpi/index.html

http://www.nostarch.com/linuxprogramming.htm

7
13.04.2011, 07:37
5 ответов

ack делает что-то подобное по умолчанию. можно использовать

$ ack blah
path/to/blah
16: blah blah
19: blah blah blah

path/to/more/blah
21: blahness

Если Вы просто хотите имена файлов, которые соответствуют Вам, может сказать ack -l. ack -lc даст Вам количество соответствий на файл.

5
27.01.2020, 20:18

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 ""}' {} +
2
27.01.2020, 20:18
grep -rins <pattern> *

Это делает то, что Вы ищете?

В случае, если у Вас есть более сложный шаблон, например, при использовании egrep, могло бы быть полезно использовать egrep -rinos <pattern> * вместо этого.

Для дальнейшего увеличения удобочитаемости добавить --color к списку параметров. Лично, у меня есть это в моем .zshrc:

export GREP_OPTIONS="--color"
1
27.01.2020, 20:18
  • 1
    i игнорирует регистры, относительно которого не попросили. –  user unknown 13.04.2011, 20:44

если Вы хотите искать полную древовидную попытку

find . -exec grep -n blah  {} /; -ls  

или делает подобный

find . -exec grep -n blah {} /; -print
0
27.01.2020, 20:18

grep -H тег включает имя файла, grepтег-n печатает номер строки. Если Вы хотите только перечислить первое соответствие и имя файла, можно использовать -l.
Для исключения дополнительной информации, Вы могли передать по каналу к sed при получении и номера строки и имени файла Вы могли передать по каналу к sed.

0
27.01.2020, 20:18

Теги

Похожие вопросы