Справочник системных ошибок и решений

Windows Server, Active Directory, 1С:Предприятие, СУБД, Linux, Cisco, MikroTik, Asterisk.

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

Linux / DevOps

Поиск текста в файлах 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/.

Полезные материалы
Рекомендуем