Базовый паттерн: сначала сужаем поиск условиями, потом применяем действие (-print, -delete, -exec).
Найти файлы по имени
find /var/www -type f -name '*.php' -printfind /etc -type f -iname 'nginx*.conf' -printОграничить глубину
find /var/log -maxdepth 1 -type f -printИсключить каталоги
find /var/www -path '/var/www/cache' -prune -o -type f -name '*.js' -printПо размеру
find / -type f -size +100M -printfind /backup -type f -size -10k -printПо дате и времени
find /var/log -type f -mtime -1 -print # изменены за последние суткиfind /data -type f -newermt '2025-09-01' -printПо владельцу и правам
find /srv -type f -user www-data -printfind / -type f -perm -4000 -print # SUID файлыДействия: безопасный режим и «массовые» операции
Всегда сначала смотрим, что затронем
find /data -type f -name '*.tmp' -printУдаление пустых и временных файлов
find /data -type f -empty -deletefind /var/tmp -type f -name '*.tmp' -deleteЗамена строк в куче файлов
find /etc/nginx -type f -name '*.conf' -exec sed -i 's/http1 on;/http2 off;/g' {} +Перемещение найденного в каталог
find /incoming -type f -name '*.csv' -exec mv -t /data/csv {} +Сумма размеров найденных файлов
find /var/lib/mysql -type f -printf '%s\n' | awk '{s+=$1} END{printf "Total: %.2f GB\n", s/1024/1024/1024}'С нулевыми байтами для корректной обработки пробелов
find /media -type f -name '*.php' -print0 | xargs -0 -I{} echo "{}"Частые кейсы «нашего админа»
Найти битые симлинки
find / -xtype l -printОставаться в одном ФС (быстро и безопасно)
find /var -xdev -type f -size +500M -printНайти потенциально публичные приватные ключи
find / -type f -name '*.key' -perm -o+r -print 2>/dev/nullБыстрое дерево крупных директорий
find /data -xdev -type f -printf '%s\t%h\n' | awk '{a[$2]+=$1} END{for (i in a) printf "%.2f GB\t%s\n", a[i]/1024/1024/1024, i}' | sort -hr | head -n 20Заменить расширение файлов пачкой
find /assets -type f -name '*.jpeg' -exec bash -lc 'for p; do mv "$p" "${p%.jpeg}.jpg"; done' _ {} +Производительность и гигиена
- Начинайте с узкого префикса пути и -maxdepth.
- Комбинируйте -prune для исключений.
- Для массовых действий используйте {} + вместо многократных вызовов.
- При ошибках доступа добавляйте 2>/dev/null, но лучше запускать от нужного пользователя или sudo.