grep без указания пути / файла: строка


234

Как вы grep и только вернуть соответствующую строку? то есть путь / имя файла опускается в результатах.

В этом случае я хочу просмотреть все файлы .bar в текущем каталоге в поиске термина FOO.

find . -name '*.bar' -exec grep -Hn FOO {} \;

Ответы:


375

Нет необходимости find. Если вы просто ищете шаблон в определенном каталоге, этого должно быть достаточно:

grep -hn FOO /your/path/*.bar

Где -hнаходится параметр, чтобы скрыть имя файла, начиная с man grep:

-h, --no-filename

Подавить префикс имен файлов на выходе. Это значение по умолчанию, когда для поиска требуется только один файл (или только стандартный ввод).

Обратите внимание, что вы использовали

-H, --with-filename

Напечатайте имя файла для каждого совпадения. Это значение по умолчанию, когда для поиска требуется более одного файла.


можно ли пропустить номер строки?
Джавадба

@javadba вы, вероятно, используете псевдоним, типа alias grep. Чтобы опустить псевдоним, введите\grep ...
fedorqui «ТАК ОСТАНОВИТЬ ВРЕД»

1
Да, он использовал псевдоним.
Джавадба

8

Просто замените -Hна -h. Проверьте man grepболее подробную информацию о вариантах

find . -name '*.bar' -exec grep -hn FOO {} \;

6

Со страницы руководства:

-h, --no-filename
    Suppress the prefixing of file names on output. This is the default when there
    is only one file (or only standard input) to search.
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.