Команда du

Команда du позволяет задействовать одноименную утилиту, предназначенную для вывода информации об объеме дискового пространства, занятого файлами и директориями. Она принимает путь к элементу файловой системы и выводит информацию о количестве байт дискового пространства или блоков диска, задействованных для его хранения.

Базовый синтаксис команды выглядит следующим образом:

$ du [параметр] [путь-к-элементу-файловой-системы-1] [...]

Утилита поддерживает ряд параметров, хотя и может выводить информацию о размере текущей директории в случае вызова без параметров и пути к элементу файловой системы, то есть, файлу или директории. Параметр -h позволяет выводить числовые значения занятого дискового пространства в килобайтах (K), мегабайтах (M) и гигабайтах (G), а не в количестве блоков диска, как это происходит по умолчанию. Параметр -a позволяет выводить информацию не только о размерах директорий, но и о размерах хранящихся в них файлов. Параметр -s напротив позволяет выводить лишь информацию об общем объеме директории без вывода информации об объемах ее элементов. Параметр позволяет выводить информацию об общем объеме всех отображенных элементов файловой системы. Кроме того, существуют такие параметры, как параметр --time, позволяющий выводить метки времени модификации файлов или директорий и параметр --exclude=<шаблон>, позволяющий исключать файлы с соответствующими шаблону именами.

Примеры использования

Получение информации об объеме директории

Для получения информации об объеме директории, а также всех ее поддиректорий может использоваться команда du без каких-либо параметров — главное передать путь к интересующей директории:

$ du /home/alexfc/bakfile/

В результате будет получен аналогичный вывод:

8348    /home/alexfc/nolf228/other
9184    /home/alexfc/nolf228/

Очевидно, что объемы поддиректорий даны в количестве блоков диска. Для того, чтобы получить объемы директорий в килобайтах и мегабайтах следует использовать параметр -h:

$ du -h /home/alexfc/bakfile/

Теперь будет получен более читаемый вывод:

8,2M    /home/alexfc/nolf228/other
9,0M    /home/alexfc/nolf228/

Для получения лишь общего объема директории следует добавить параметр -s:

$ du -hs /home/alexfc/bakfile/

Вывод будет содержать единственную строку:

9,0M    /home/alexfc/nolf228/

Если же требуется получить информацию обо всех хранящихся в директориях файлах, нужно использовать параметр -a:

$ du -ha /home/alexfc/bakfile/

Вывод будет выглядеть аналогичным образом:

380K    /home/alexfc/nolf228/splash1280.jpg
188K    /home/alexfc/nolf228/nolf228.jpg
264K    /home/alexfc/nolf228/splash1024.jpg
8,2M    /home/alexfc/nolf228/other/Better_Red_Than_Dead.rar
8,2M    /home/alexfc/nolf228/other
9,0M    /home/alexfc/nolf228/

Для вывода общего объема следует использовать параметр -c:

$ du -hс /home/alexfc/bakfile/

Теперь в выводе появится дополнительная строка «итого»:

8,2M    /home/alexfc/nolf228/other
9,0M    /home/alexfc/nolf228/
9,0M    итого

В том случае, если нужно скрыть информацию о файлах с определенными именами, может использоваться параметр --exclude=<шаблон>. Например, данная команда позволяет скрыть информацию обо всех графических файлах с расширением .jpg:

$ du -ha --exclude="*.jpg" /home/alexfc/nolf228/

Вывод не будет содержать информации о файлах с упомянутым расширением, но будет содержать информацию о файлах со всеми другими расширениями, а также обо всех директориях. При этом объем директорий будет приведен в соответствие со списком отображаемых файлов :

8,2M    /home/alexfc/nolf228/other/Better_Red_Than_Dead.rar
8,2M    /home/alexfc/nolf228/other
8,2M    /home/alexfc/nolf228/