141

Я хотел бы найти все файлы, которые содержат определенную строку текста. Как бы вы сделали это в терминале?

5 ответов5

247
grep -r 'text goes here' path_goes_here
26

использовать прожектор

mdfind "text goes here"
mdfind -onlyin /home/user/Desktop -live "live update"

не забудьте посмотреть на:

man mdfind
9
  1. Через Ack

brew install ack ack "text goes here"

  1. Через найти

find . |grep "text goes here"

  1. Через grep

grep -RnslI "text goes here"

2

Вы можете выбрать один из следующих вариантов в зависимости от вашего вкуса и потребностей. Предположим, вам нужно искать файлы, содержащие текст - "асинхронно", рекурсивно в текущем каталоге, вы можете сделать это одним из способов, как показано ниже:

Используя grep

Используя ack

1

Ответ Игнасио великолепен и помог мне найти файлы, содержащие определенный текст. Единственная проблема, с которой я столкнулся, заключалась в том, что при запуске этой команды были бы перечислены все файлы, включая тот, где шаблон не отображался.

No such file or directory Это то, что я вижу рядом с файлами, которые не содержат шаблон.

Если вместо этого вы добавляете -s к команде, как в:grep -lr "text pattern" ./ -s ; grep -lr "text pattern" [PATH DIRECTORY] -s используется, он покажет вам только какие файлы содержат шаблон.

Аналогично, если grep -nr "text pattern" ./ -s ; grep -nr "text pattern" [PATH OF DIRECTORY] -s используется для печати файла плюс номер строки и вхождение шаблона.

Пожалуйста, поправьте меня, если мое понимание неверно.

Ссылка: Как я могу заставить grep не распечатывать ошибки «Нет такого файла или каталога»?

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .