grep, не показуючи шлях / файл: рядок


234

Як ви перехоплюєте та повертаєте лише відповідну лінію? тобто шлях / ім’я файлу опущено в результатах.

У цьому випадку я хочу шукати всі .bar файли в поточному каталозі, шукаючи термін FOO

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

Відповіді:


375

Не потрібно find. Якщо ви просто шукаєте шаблон у певному каталозі, цього має бути достатньо:

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

Звідки -hпараметр для приховання імені файлу, як від man grep:

-h, --no-filename

Придушити префіксацію імен файлів на виході. Це за замовчуванням, коли для пошуку потрібен лише один файл (або лише стандартний вхід).

Зверніть увагу, що ви використовували

-H, --з ім'ям файлу

Роздрукуйте ім’я файлу для кожної відповідності. Це за замовчуванням, коли для пошуку більше одного файлу.


чи можна опустити номер рядка?
javadba

@javadba ви, ймовірно, використовуєте псевдонім, введіть alias grep. Щоб опустити псевдонім, тип\grep ...
fedorqui «SO припинити шкодити»

1
Так, він використовував псевдонім.
javadba

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.