Центр Диагностики & База Системных Ошибок

Решения для Windows Server, Active Directory, 1С, СУБД, Linux, Cisco, MikroTik и IP-телефонии.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, баз данных и сетевого оборудования. Перед выполнением действий обязательно создайте резервную копию. При отсутствии необходимой квалификации обратитесь к ИТ-специалистам.

Поиск текста в файлах Linux: команда grep -R с примерами для новичков

Обновлено: 27.08.2026  ·  Официальная база знаний

Задача быстрого поиска нужной строки в проекте

При администрировании серверов часто возникает необходимость найти, в каком конкретно файле прописан определенный пароль от базы данных, старый IP-адрес, доменное имя, функция или вредоносный код (eval/base64). Просматривать каждый файл вручную невозможно. Утилита grep позволяет за долю секунды просканировать миллионы строк исходного кода и конфигов.

Флаги-супергерои утилиты grep:

ФлагЧто делает
-R или -rРекурсивный поиск по всем подпапкам и вложенным файлам.
-nПоказывает точный номер строки, где обнаружено совпадение.
-iИгнорирует регистр (ищет и с маленькой, и с большой буквы).
-wИщет строго целое слово (не найдет «cat» внутри слова «category»).
-lВыводит только имена файлов, не печатая сам найденный текст.

Практические примеры использования grep

  1. 1. Базовый рекурсивный поиск с номерами строк

    Найдем слово DB_PASSWORD во всех файлах каталога /var/www/:

    grep -Rni "DB_PASSWORD" /var/www/
  2. 2. Поиск только в файлах определенного типа (--include)

    Если проект содержит миллионы картинок и логов, ограничьте поиск только скриптами .php или .conf:

    grep -Rn --include="*.php" "eval(base64_decode" /var/www/html/
  3. 3. Исключение тяжелых папок (--exclude-dir)

    Чтобы поиск не зависал в тяжелых папках кэша, node_modules или .git:

    grep -Rni --exclude-dir=node_modules --exclude-dir=.git "api_secret_key" ./
  4. 4. Вывести только список файлов без лишнего текста (-l)

    grep -Ril "mail.smtp2go.com" /etc/
Практический опыт инженера: Для поиска текста в проектах на сотни гигабайт вместо классического grep используйте современную утилиту ripgrep (команда rg). Она написана на Rust, автоматически игнорирует файлы из .gitignore и работает в 5–10 раз быстрее.

Частые вопросы (FAQ)

В чем разница между grep -r и grep -R (с большой буквы)?

Маленький флаг -r не переходит по символическим ссылкам (symlinks), а большой флаг -R переходит по всем символическим ссылкам на файлы и каталоги.

Как скрыть ошибки Permission Denied при поиске по всему серверу?

Перенаправьте поток ошибок в черную дыру: grep -Rni "secret" / 2>/dev/null.

Как подсветить найденные слова ярким цветом?

Добавьте флаг цветного вывода: grep --color=always -Rni "pattern" /path/.

Как показать 3 строки до и 3 строки после найденного совпадения?

Используйте флаг контекста -C 3: grep -R -C 3 "Fatal error" /var/log/.