Утилита du. Как посмотреть размеры каталогов в глубину на bash?
Утилита du.
Утилита du (от англ. Disk Usage) — инструмент командной строки GNU\Linux, который позволяет узнать размеры файлов и каталогов в файловой системе.
Вывести содержимое каталогов.
Выведем содержимое каталога /home/hamster/Books/ с указанием размеров его подкаталогов:
$ sudo du -Phx /home/hamster/Books/
Ответ:

Команда выполняет следующее:
sudo— Эта команда позволяет выполнить последующую команду с привилегиями суперпользователя (root). Это может быть необходимо, если доступ к каталогу/home/hamster/Books/ограничен или если нужно получить информацию о всех файлах и подкаталогах, включая те, что принадлежат другим пользователям.du— Это команда, которая используется для оценки использования дискового пространства (disk usage). Она показывает, сколько места занимают файлы и каталоги.-P— Этот флаг указывает утилите du не переходить по символическим ссылкам (симлинкам) и учитывать только фактические файлы и каталоги.-h— Этот флаг форматирует вывод в удобочитаемом формате, автоматически выбирая подходящие единицы измерения (например,G,M,K) вместо использования байтов по умолчанию.-x— Этот флаг указывает утилите du не пересекать границы файловой системы, то есть учитывать только файлы и каталоги, которые находятся в той же файловой системе, что и указанный путь./home/hamster/Books— Это путь к каталогу, для которого нужно оценить использование дискового пространства.
Команда вычисляет и выводит использование дискового пространства для каталога /home/hamster/Books/ в удобочитаемом формате, не учитывая симлинки и не выходя за границы текущей файловой системы, с привилегиями суперпользователя.
Ранжировать от большего к меньшему.
Ранжируем список от большего каталога к меньшему:
$ sudo du -Phx /home/hamster/Books/ | sort -hr
Ответ:

Вывести по величине измерения.
Например, выведем то, размер чего измеряется гигабайтами и ранжируем вывод:
Для пользователей с американской локалью:
$ sudo du -Phx /home/hamster/Books/ | grep '[0-9\.]\+G' | sort -hr
Ответ:

Для других локалей:
$ sudo du -Phx /home/hamster/Books/ | grep '[0-9\,]\+G' | sort -hr
Ответ:

Вместо /home/hamster/Books/ нужно вписать любой каталог в системе, а вместо G прописать фильтрацию по другим размерам (G, M, K).
Вывести только 10 самых больших по величине измерения.
Следующая команда делает нечто похожее, но сортирует каталоги по возрастанию размера в M и показывает только 10 самых больших:
$ sudo du -Phx /home/hamster/Books/ | grep '[0-9\,]\+M' | sort -hr | head
Ответ:

Специальные указания каталогов.
Чтобы указать корневой каталог, используйте /, чтобы указать текущий каталог, используйте . (точка).
В любой из перечисленных выше команд вы можете указывать определённый каталог, чтобы начать сбор информации с него.
Например, когда вы нашли каталог с большим размером и хотите узнать больше подробностей о нём, укажите его в одной из команд, дописав путь работы утилиты в него.
Прочие примеры.
1. du (основной вариант).
du -sh /mnt/backups/*/
-s— суммарный размер каждого каталога;-h— человекочитаемый формат;*/— только каталоги первого уровня.
2. Просмотр всех подкаталогов на заданную глубину.
Глубина 2 уровня:
du -h --max-depth=2 /mnt/backups/
Глубина 3 уровня:
du -h --max-depth=3 /mnt/backups/
3. Сортировка по размеру (крупные каталоги сверху).
du -sh /mnt/backups/*/ | sort -rh
4. Только каталоги определенной глубины.
Показать только каталоги 1 уровня:
du -sh /mnt/backups/*/
Показать каталоги 2 уровня:
du -sh /mnt/backups/*/*/
5. С подробностями (все файлы и подкаталоги).
du -ah /mnt/backups/ | sort -rh | head -20
Пример с популярными параметрами.
du -ch --exclude='*.tmp' --max-depth=2 -t 100M /q3_nfs/Books/*/ | sort -hr | head
-c— показать общий итог;-h— форматирует вывод “по-человечески” (понимает K, M, G);;--exclude=PATTERN— исключить некоторые каталогиPATTERN;--max-depth=2— глубина 2 уровня;-t SIZE— показать только каталоги больше указанного размера (например,-t 100M);sort -hr— сортирует результаты:-h— сортирует “по-человечески” (понимает K, M, G);-r— в обратном порядке (от самых больших к маленьким).
head— показывает только первые 10 строк (самые большие каталоги).
Оригиналы источников информации.
- zalinux.ru «Как найти файлы и папки занимающие больше всего места в Linux.»

