2010-07-13 09:42:08 +0000 2010-07-13 09:42:08 +0000
179
179

Как найти в терминале

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

Ответы (5)

299
299
299
2010-07-13 09:47:11 +0000
grep -r 'text goes here' path_goes_here
31
31
31
2010-08-12 22:38:59 +0000

используйте прожектор

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

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

man mdfind
12
12
12
2016-03-03 14:07:18 +0000
  1. Через Ack
brew install ack 
ack "text goes here"
  1. Через
find . |grep "text goes here"
  1. Через смазку
grep -RnslI "text goes here"
4
4
4
2017-06-01 08:00:18 +0000

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

Использование grep

Использование ack

2
2
2
2017-06-01 15:27:29 +0000

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

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 не распечатать ошибку “Нет такого файла или директории”?

Похожие вопросы

10
12
37
7
4