Як відображати назви файлів тільки після пошуку за ключовим словом?


15

Наразі в каталозі є n файлів даних, де кожен файл має щонайменше 1 рядок дуже довгих даних. Моя структура каталогу

director/
    data1.json
    data2.json
    data3.json

Я знаю, що принаймні один із цих файлів містить ключове слово, яке я шукаю, але оскільки один рядок даних занадто довгий, він охоплює весь мій термінал. Як отримати ім'я файлу лише після виконання ключового слова grep? Команда grep, яку я використовую:

grep keyword *.json

Відповіді:


30

Аргумент -l повинен робити те, що ви хочете.

   -l, --files-with-matches
          Suppress  normal  output;  instead  print the name of each input
          file from which output would normally have  been  printed.   The
          scanning  will  stop  on  the  first match.  (-l is specified by
          POSIX.)

7

Ви можете використовувати xargs у поєднанні з --null з grep або --print0 з ack. Я вважаю, що швидкість удару швидша.

grep -lr --null searchterm * | xargs -I {} -0 echo {}

ack -lr --print0 searchterm * | xargs -I {} -0 echo {}

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.