Как искать текст внутри файлов в Linux с помощью grep?
Нужно найти, в каком файле проекта встречается слово API_KEY или определённая функция. Перебирать руками долго. Как через терминал искать текст сразу во всех файлах? Подскажите по grep.
2 ответа
Для поиска текста внутри файлов — команда 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) покажет только имена файлов, где есть совпадение, без самих строк — удобно, когда нужен просто список.
Запомни разницу между двумя главными «искалками»:
find— ищет файлы по имени/типу/дате.grep— ищет текст внутри файлов.
Полезный приём — комбо через пайп. Например, отфильтровать вывод другой команды:
ls -la | grep .py
покажет из списка файлов только строки со словом .py. Символ | (пайп) передаёт вывод одной команды на вход другой.