Командная строка: Как найти топ-10 самых больших файлов по размеру в директории /var/log и вывести их список?
Для поиска топ-10 самых больших файлов в директории /var/log можно использовать несколько подходов в командной строке Linux.
**Способ 1: Команда find + sort + head (рекомендуемый)**
find /var/log -type f -exec du -h {} + | sort -rh | head -10
Разбор команды:
— `find /var/log -type f` — находит все файлы (не директории) в /var/log рекурсивно
— `-exec du -h {} +` — для каждого найденного файла запускает `du -h`, который выводит размер в человекочитаемом формате (KB, MB, GB)
— `sort -rh` — сортирует результат в обратном порядке (-r) по человекочитаемым числам (-h), то есть от большего к меньшему
— `head -10` — оставляет только первые 10 строк
**Способ 2: Через du с ключом —max-depth**
du -ah /var/log | sort -rh | head -10
Здесь `du -ah /var/log` выводит размеры всех файлов и директорий. Если нужны только файлы, лучше использовать способ 1.
**Способ 3: С выводом в байтах для точной сортировки**
find /var/log -type f -exec du -b {} + | sort -rn | head -10 | awk ‘{printf «%st%sn», $1, $2}’
Здесь `-b` выводит размер в байтах, `-n` сортирует как числа. Это более точный вариант, так как человекочитаемая сортировка иногда может давать неожиданные результаты.
**Способ 4: С красивым форматированием вывода**
find /var/log -type f -printf ‘%s %pn’ | sort -rn | head -10 | awk ‘{size=$1; $1=»»; printf «%st%sn», size, $0}’
**Важные замечания:**
1. Для чтения файлов в /var/log может потребоваться запуск с правами суперпользователя: добавьте `sudo` перед командой.
2. Флаг `-h` в `sort` поддерживается в GNU sort (Linux), но может отсутствовать в macOS — там используйте `-g`.
3. Если директория /var/log содержит символические ссылки, `find` по умолчанию их не следует. Добавьте `-L` после `find`, чтобы включить разыменование ссылок.
**Пример вывода:**
1.2G /var/log/syslog.1
450M /var/log/auth.log
120M /var/log/kern.log
…
Наиболее универсальный и простой вариант для повседневного использования:
sudo find /var/log -type f -exec du -h {} + | sort -rh | head -10
