Как напечатать строку, соответствующую моему тексту, используя find в linux?

Привет, я использую эту команду для поиска текста в файлах в linux

find ./ -type f -exec grep -l "Text To Find" {} \; 

Команда работает нормально, но я хотел бы автоматически распечатать строку, содержащую текст, или, если возможно, две строки над текстом и две строки за текстом.

Также приветствуются другие предложения по поиску текста и печати строк вместо использования find ,

Заранее большое спасибо.

 find ./ -type f -exec grep -Hn "Text To Find" {} \; 

Используйте флаги -A и -B для печати строк до и после матча:

 find ./ -type f -exec grep -Hn -A1 -B1 "Text To Find" {} \; 

также вы можете просто использовать grep:

 grep -R -Hn -A1 -B1 "Text To Find" * 

Вы можете использовать следующую альтернативную конструкцию find для более быстрого поиска:

 find . -type f -print0 | xargs -0 grep -Hn -C2 "Text To Find" 

Вместо вызова grep для каждого файла (что и есть -exec ... {} ), он будет вызывать grep для группировок файлов.

Обратите внимание, что параметры -print0 , -0 и -C2 не являются переносимыми (будут отлично работать с вариантами GNU программ find , xargs и grep , то есть большинства установок Linux, BSD и др., А также Cygwin и MinGW, но не ожидайте их для работы с более старыми установками Solaris, HPUX и т. д.).

Почему бы не просто grep?

 grep -r -C2 "Text To Find" * 

Чтобы напечатать строки (с файлом, который содержит его):

find . -type f -exec grep "text" {} /dev/null \;

Чтобы увидеть 2 строки после строки, которая соответствует add -A2 после «grep» в приведенной выше строке, -B2 для двух строк раньше, и -C2 для обоих.

 find ./ -type f -exec egrep -H -B 2 -A 2 "Text" '{}' ';'