Команда find — один из самых полезных инструментов Linux для администрирования VPS: она помогает находить файлы по имени, размеру, времени создания, владельцу, правам доступа и даже по содержанию, а затем выполнять безопасные действия (перемещение, изменение прав доступа, архивирование, удаление) над найденными файлами.
Если вы управляете веб-сайтом, почтовым сервером или каким-либо приложением на VPS под Linux, освоение find сэкономит вам часы во время инцидентов: «Куда делось дисковое пространство?», «Какие файлы изменились прошлой ночью?», «Какие папки имеют небезопасные права доступа?»
Многие задачи «поиска» решаются быстрее с помощью правильной команды:
| Инструмент | Лучше всего подходит для | Ключевая деталь |
|---|---|---|
| find | Точный поиск файлов действия (удаление/перемещение/chmod) | Просматривает каталоги в режиме реального времени |
| локация | Мгновенный поиск по имени файла | Использует индекс (может быть устаревшим) |
| grep | Поиск по содержимому внутри файлов | Часто используется в паре с find (-exec grep) |
find
Место поиска — это путь к каталогу. Используйте . для текущего каталога. Условия определяют, что считается совпадением (имя, тип, время, владелец, права доступа). Действия определяют, что делать с найденными элементами (вывод, запуск, удаление).
Важное поведение: find оценивается слева направо. При объединении условий с помощью AND/OR используйте скобки (экранируемые в оболочке), чтобы избежать неожиданностей.
# Example: (A OR B) AND type file
find . ( -name "*.log" -o -name "*.txt" ) -type f
# Exact name
find /var/www -name "wp-config.php"
# Pattern (all .tmp files)
find / -name "*.tmp"
# Case-insensitive
find /home -iname "*.JPG"
Совет: всегда заключайте шаблоны в кавычки, например "*.tmp" чтобы оболочка не расширяла их слишком рано.
# Files only
find . -type f
# Directories only
find . -type d
# Symlinks
find /etc -type l
# Files larger than 1 GB
find / -type f -size 1G
# Files smaller than 10 KB
find /var/www -type f -size -10k
На производственных серверах избегайте сканирования всей файловой системы, если в этом нет необходимости. Начните с вероятных «горячих точек»: /var/log, /var/lib, /home, /tmpи каталог вашего проекта.
Флаги времени чрезвычайно полезны для реагирования на инциденты и очистки:
# Files modified more than 60 days ago
find /var/log -type f -mtime 60
# Files modified in the last 30 minutes
find /var/www -type f -mmin -30
# Files modified between 10 and 20 minutes ago
find /var/www -type f -mmin 10 -mmin -20
Совет: -mtime указывается в днях. -mmin указывается в минутах. При подозрительной активности на VPS -mmin часто более практичным.
# Files owned by a user
find /var/www -type f -user www-data
# Files owned by a group
find /var/www -type f -group www-data
Эти проверки являются стандартными при проверке безопасности Linux:
# World-writable files (potential risk)
find /var/www -type f -perm -0002
# Directories with 777 (almost always a mistake)
find /var/www -type d -perm 0777
# Files readable/writable by everyone
find / -type f -perm 0666
Если вы запускаете бизнес-сервисы (WordPress, почтовый сервер, панели управления) на VPS, поддержание порядка в правах доступа является частью базового укрепления безопасности.
Для поиска внутри файлов используйте комбинацию find с grep. Это часто используется при поиске секретных данных, флагов конфигурации или подозрительных встраиваний.
# Search for a string inside all .conf files
find /etc -type f -name "*.conf" -exec grep -Hn "listen" {} ;
# Case-insensitive search inside PHP files (project folder)
find /var/www/project -type f -name "*.php" -exec grep -Hin "base64_decode" {} ;
-maxdepth и -mindepth.-xdev.-prune (отлично подходит для node_modules, кэш, резервные копии).# Exclude node_modules and vendor directories
find /var/www/project
( -path "*/node_modules/*" -o -path "*/vendor/*" ) -prune -o
-type f -name "*.log" -print
Самая мощная часть find — это автоматизация. Но с большой силой приходит и риск: «ой, я удалил рабочую среду». Используйте безопасный рабочий процесс:
-print и просмотрите результаты.-ok) или запишите результаты в журнал.-delete для безопасных, хорошо протестированных шаблонов.# SAFE: show what would be removed first
find /tmp -type f -mtime 14 -print
# Semi-safe: ask before executing
find /tmp -type f -mtime 14 -ok rm -f {} ;
# Fast but risky: delete immediately (use only when confident)
find /tmp -type f -mtime 14 -delete
Совет от профессионала: по возможности используйте -exec ... {} (plus), когда это возможно — это эффективнее, чем запускать команду по одному разу для каждого файла.
Классическая задача для VPS: не давать временным папкам расти бесконечно. Запланируйте ночную очистку:
crontab -e
# Remove files older than 14 days from /tmp daily at 00:00
0 0 * * * /usr/bin/find /tmp -type f -mtime 14 -delete
Используйте полный путь к find (проверьте с помощью which find) и всегда начинайте с -print пробного запуска на тестовой папке.
*.log: ваша оболочка расширяет его некорректно. Решение: используйте "*.log".-print .-mtime означает дни, а не часы. Решение: используйте -mmin для коротких интервалов.( ... ).На VPS под Linux find является ежедневным инструментом: проверка использования диска, очистка старых файлов, поиск конфигураций и выполнение проверок безопасности. В сочетании с инструментами мониторинга (такими как Zabbix) он становится надежным набором инструментов для реагирования на инциденты.