← Все вопросы

Как искать текст внутри файлов в Linux с помощью grep?

Задан 6 месяцев назад681 просмотров2 ответа
10

Нужно найти, в каком файле проекта встречается слово API_KEY или определённая функция. Перебирать руками долго. Как через терминал искать текст сразу во всех файлах? Подскажите по grep.

2 ответа

12
✓ Принятый ответ — помог автору

Для поиска текста внутри файлов — команда grep. Формат: grep ЧТО-ищем ГДЕ.

Найти слово в одном файле:

grep API_KEY config.py

Покажет все строки, где встречается API_KEY.

Искать сразу во всех файлах проекта (рекурсивно по подпапкам) — флаг -r:

grep -r API_KEY .

Точка . = «искать в текущей папке и всех вложенных».

Очень полезные флаги (их часто комбинируют):

grep -rni "api_key" .
  • -r — рекурсивно по папкам;
  • -n — показать номер строки;
  • -iигнорировать регистр (найдёт и API_KEY, и api_key, и Api_Key).

Если в искомом тексте есть пробелы, бери его в кавычки: grep -r "def login" .

Частая ошибка: искать фразу с пробелами или спецсимволами без кавычек. grep -r def login . grep поймёт как «искать слово def в файлах login и .» — совсем не то. Любой текст с пробелами всегда заключай в кавычки.

Ещё grep -rl API_KEY . (флаг -l) покажет только имена файлов, где есть совпадение, без самих строк — удобно, когда нужен просто список.

4

Запомни разницу между двумя главными «искалками»:

  • find — ищет файлы по имени/типу/дате.
  • grep — ищет текст внутри файлов.

Полезный приём — комбо через пайп. Например, отфильтровать вывод другой команды:

ls -la | grep .py

покажет из списка файлов только строки со словом .py. Символ | (пайп) передаёт вывод одной команды на вход другой.

Ваш ответ

Войдите, чтобы ответить на вопрос.