Утилита 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 строк (самые большие каталоги).

Оригиналы источников информации.

  1. zalinux.ru «Как найти файлы и папки занимающие больше всего места в Linux.»