Команда `find / -name ".log"` выполняется чрезвычайно долго (минуты/часы) из-за обхода всей корневой файловой системы.
Причины
1. Полный обход корня — `find /` рекурсивно сканирует все подмонтированные разделы, сетевые шары, псевдо-ФС (`/proc`, `/sys`, `/dev`, `/run`), где тысячи псевдофайлов.
2. Отсутствие фильтрации — команда обрабатывает все типы объектов (файлы, директории, symlinks) и не исключает служебные точки монтирования.
3. Неверный шаблон — `-name ".log"` ищет файлы строго с именем `.log` (скрытый файл), а не файлы с расширением `.log`. Вероятно, пользователь хотел `-name ".log"`.
4. Отсутствие ограничений — нет `-maxdepth`, `-xdev`, `-prune`, поэтому даже директории с миллионами файлов (кэш, `/var/log`, `/tmp`) сканируются полностью.
Решение
1. Используйте `locate` (быстрее) — если база обновлена:
bash
locate .logНедостаток: может не содержать свежих файлов, требует `sudo updatedb`.
2. Оптимизированный `find` с исключениями и фильтрами:
- Только одна файловая система (`-xdev`):
bash
sudo find / -xdev -type f -name ".log" 2>/dev/null- Исключить псевдо-ФС через `-prune`:
bash
sudo find / -path /proc -prune -o -path /sys -prune -o -path /dev -prune -o -type f -name ".log" -print 2>/dev/null- Искать только в нужной директории (например, `/var/log`):
bash
sudo find /var/log -type f -name ".log"3. Ограничьте глубину (если нужно только верхние уровни):
bash
sudo find / -maxdepth 3 -type f -name ".log" 2>/dev/null4. Для форензики/пентеста: сузьте задачу — ищите только в директориях, релевантных для конкретного сценария:
bash
# пример: логи и конфиги
sudo find /var/log /etc /home -type f -name ".log"Итоговая команда (максимум скорости)
bash
sudo find / -xdev -type f -name "*.log" 2>/dev/nullЕсли нужны именно скрытые файлы с именем `.log` (без расширения), оставьте `-name ".log"`, но обязательно `-xdev` и `-type f`.