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 {} \;
jkshah
источник
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.
ТС1
источник