it-swarm-ru.tech

Как найти файлы с определенным текстом в Терминале

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

149
Svish
grep -r 'text goes here' path_goes_here
256
Ignacio Vazquez-Abrams

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

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

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

man mdfind
26
user46046
  1. Через Ack

brew install ack ack "text goes here"

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

find . |grep "text goes here"

  1. Через grep

grep -RnslI "text goes here"

10
Anant Gupta

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

Использование grep  enter image description here

Используя ack  enter image description here

3
karthiks

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

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 не распечатывать ошибки «Нет такого файла или каталога»?

1
CP3O