Команда du в Linux - руководство и примеры

В Linux слово du означает «disk usage», и эта команда чаще всего используется для проверки размера (и другого использования пространства/диска) файлов и каталогов.

Команду du можно использовать в любом дистрибутиве Linux, включая Ubuntu, Debian, Fedora, Linux Mint и другие. Ее можно использовать даже в macOS.

Синтаксис команды du в Linux следующий:

du [OPTIONs] [FILEs]

Можно запустить команду du, просто введя «du» без каких-либо опций или флагов:

du

Это даст вывод информации об использовании диска для каталогов в каталоге, в котором находимся. Выполнение команды du без флагов и опций даст большой отчет с не очень читаемой статистикой.

Пример вывода данных при выполнении команды du без опций и флагов:

... много строк
164	./re3 _2021_02_19/build
132576	./re3 _2021_02_19
60	./Download/openvpn
34568	./Download
408364	.

И это только часть вывода при запуске du в данном каталоге. В реальности выводится множество строк для каждого (под)каталога существующий в опрашиваемом каталоге. Число в этом выводе - это (обычно) килобайты (KB).

Последняя строка результатов команды du - это общий размер каталога.

Если запустить команду без указания каталога, она будет запущена в том каталоге, в котором сейчас находимся (pwd). Если необходимо запустить команду в другом каталоге, нужно будет указать его после опций.

Пример:

du /var/www/html

Получим результаты для каталогов в пределах /var/www/html, независимо от того, в каком каталоге сейчас находимся.

  • -h, –human-readable - эта опция показывает размеры файлов в «человекочитаемом» формате, например: 100K, 100MB, 100G. Это наиболее часто используемая опция для du. Чтобы отобразить результаты только в КБ, МБ или ГБ, используются опции -k, -m или -g.
  • -a, –all отображает все, включая каталоги и файлы.
  • -t, –threshold=РАЗМЕР - исключает результаты меньше указанного РАЗМЕР, или больше -РАЗМЕР (если отрицательно). Пример:
    du --threshold=1G

    покажет только файлы размером более 1 ГБ.

  • –time - показывает дату/время последнего изменения каждого файла, рядом с размером файла.
  • -X, –exclude=ШАБЛОН - эта опция исключит файлы, соответствующие заданному шаблону. Пример:
    du --exclude="*.txt"

    исключит из вывода все файлы .txt.

  • -s, –summarize - для получения общего размера каталога
  • –help - получение подробной справки и информации о команде du и ее опциях

Для этого используйте опцию -h. Пример:

du -h

Вывод:

164K	./re3 _2021_02_19/build
130M	./re3 _2021_02_19
60K	./Download/openvpn
34M	./Download
399M	.

Вместо просто цифр, без указания, что это за цифры (KB, MB, GB)

Для этого необходимо использовать опции -h и -a. Это наиболее часто используемый пример команды du:

du -ha

Это также отобразит размер файлов в удобочитаемом формате (K, M, G).

Чтобы исключить все файлы и каталоги, размер которых меньше 100 МБ, используйте параметр -threshold:

du -ha --threshold=100M

В результате будут показаны только файлы и каталоги, размер которых превышает 100 МБ.

Для получения даты изменения файла или каталога рядом с размером в результатах, используется параметр –time. Пример:

du -ha --time

Получаем результат, аналогичный следующему:

3,7M	2019-07-15 13:54	./Download/11bcd3c1d43688891ed23f5677a174ea.pdf
15M	2019-07-15 13:54	./Download/286674e3082feb7e5afb92777e48821f.pdf
34M	2022-02-03 20:28	./Download
399M	2022-02-20 19:55	.

Часто используемой опцией для команды du является –exclude. Чаще всего она используется для исключения определенных типов файлов. Например, если необходимо исключить все файлы .txt из результатов, необходимо использовать:

du -ha --exclude="*.txt"

Если необходимо проверить размер определенного каталога, используется опция -s (–summarize). Используя опцию -s, получаем информацию о размере каталога, для которого выполняется команда. Это также последняя строка вывода, когда выполнить команду du без опции -s.

Например:

du -hs /var/www/

Получим:

771M /var/www/html/

Выводится только размер каталога html

Более подробно об опциях du можно узнать набрав в командной строке

man du