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

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

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

Linux / DevOps

Как найти файл в Linux по имени или тексту внутри: команды find и grep для новичков

Обновлено: 27.08.2026 · Официальная документация ↗

Проблема поиска нужной информации в файловой системе Linux

В операционной системе Linux нет графической кнопки «Поиск», а файлы конфигураций, скрипты и логи разбросаны по сотням системных каталогов (/etc/, /var/, /opt/, /usr/). Начинающие администраторы часто тратят часы на ручной перебор папок в попытке вспомнить, где лежит нужный конфиг или в каком файле прописан пароль от базы данных. Две базовые утилиты — find (для поиска по свойствам файлов) и grep (для поиска по содержимому) решают эту задачу за секунды.

Разница между find и grep простыми словами

УтилитаЧто ищетПример запроса
findСам файл по его имени, размеру, дате изменения или расширению«Где на диске лежит файл с именем wp-config.php
grepТекст внутри файлов (поиск строки, переменной, IP-адреса)«В каких файлах папки /etc/ написано слово 192.168.1.100

Практические примеры поиска файлов и текста

Сценарий 1: Поиск файла по точному имени или маске (find)

Найдем конфигурационный файл nginx.conf по всей файловой системе:

sudo find / -name "nginx.conf" 2>/dev/null
  • / — искать начиная с корня диска (можно указать конкретную папку, например /etc).
  • -name — точное имя файла (с учетом регистра).
  • -iname — поиск без учета регистра (найдет и File.txt, и file.TXT).
  • 2>/dev/null — скрыть системные ошибки «Permission denied» для папок, к которым нет доступа.

Сценарий 2: Поиск всех файлов с расширением .log, весом больше 100 МБ

Найдем тяжелые файлы логов, забивающие свободное место на диске:

sudo find /var/log -type f -name "*.log" -size +100M

Сценарий 3: Поиск текста внутри всех файлов в папке (grep -rnw)

Найдем, в каком именно файле сайта прописана база данных db_shop:

grep -rnw '/var/www/my_site/' -e 'db_shop'
  • -r (Recursive) — сканировать все вложенные подпапки.
  • -n (Line Number) — показать точный номер строки в найденном файле.
  • -w (Word) — искать слово целиком (исключает ложные совпадения).
  • -I (дополнительно) — игнорировать бинарные файлы (картинки, архивы).

Сценарий 4: Связка find + grep (Поиск текста только в PHP-файлах)

Если в проекте лежат миллионы картинок, искать по всем файлам подряд неэффективно. Найдем текст только в файлах с расширением .php:

find /var/www/ -type f -name "*.php" -exec grep -Hn "DB_PASSWORD" {} +

Типовые ошибки администраторов

  • Поиск find / без перенаправления ошибок 2>/dev/null: Без перенаправления поток ошибок доступа заблокирует весь экран терминала тысячами строк «Permission denied».
  • Использование обычного grep на гигантских дампах SQL: Поиск регулярного выражения по SQL-дампу на 50 ГБ может подвесить диск. Ограничивайте вывод утилитой head или используйте многопоточный ripgrep (rg).
Требуется обнаружить следы вредоносного кода или веб-шеллы (Web-Shell) на сервере?
Специалисты ITSTM проведут комплексное сканирование файловой системы на наличие уязвимостей, бэкдоров и инъекций вредоносного кода.
💡 Практика специалистов: Для мгновенного поиска по коду установите современную консольную утилиту 'ripgrep' (пакет 'ripgrep', команда 'rg'). Она автоматически игнорирует файлы из .gitignore, бинарники и скрытые папки, выполняя поиск в десятки раз быстрее классического find/grep.

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

Как найти файлы, которые изменялись за последние 24 часа?

Используйте параметр mtime: sudo find /var/www/ -type f -mtime -1 (значение -1 означает менее 1 дня назад).

Как найти и сразу удалить все временные файлы .tmp?

Используйте ключ -delete: find /tmp -type f -name "*.tmp" -delete (будьте предельно внимательны перед запуском!).

В чем преимущество утилиты locate перед find?

Утилита locate ищет файлы мгновенно по заранее проиндексированной базе данных (updatedb), но не видит файлы, созданные пару минут назад.

Как с помощью grep исключить определенные папки из поиска?

Используйте флаг --exclude-dir: grep -rnw --exclude-dir={node_modules,vendor,cache} '/var/www/' -e 'SECRET_KEY'.

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