- Команда du в Linux
- Синтаксис и опции команды du
- Примеры использования du
- Выводы
- 🐧 Список всех каталогов и сортировка по размеру на Linux
- Как вывести список 10 самых больших каталогов
- Bash-скрипт для перечисления каталогов по размеру
- Linux commands : du – sort by size, date and other properties
- du – sort by size
- du – sort by size and get top 10 biggest
- du – sort by size and get top 10 smallest
- du – sort by size in human-readable numbers
- Sort files by time and date
Команда du в Linux
Иногда возникает необходимость посмотреть сколько места занимают файлы в определённой папке и найти самые большие файлы для того чтобы их удалить. Конечно, для решения этих задач существует множество инструментов, но самый простой из них, это утилита du. Она позволяет вывести размер всех файлов в определённой папке в байтах или в более удобном формате.
В сегодняшней статье мы разберемся что из себя представляет команда du Linux, а также как ею пользоваться для решения ваших рабочих задач.
Синтаксис и опции команды du
Синтаксис команды очень простой. Вам достаточно передать ей опции и путь к папке с которой следует работать:
$ du опции /путь/к/папке
- -a, —all — выводить размер для всех файлов, а не только для директорий, по умолчанию размер выводится только для папок;
- -B, —block-size — указать единицы вывода размера, доступно: K,M,G,T,P,E,Z,Y для 1024 и KB, MB и так далее для 1000;
- -c, —total — выводить в конце общий размер всех папок;
- -d, —max-depth — максимальная глубина вложенности директорий;
- -h, —human-readable — выводить размер в единицах измерения удобных для человека;
- —inodes — выводить информацию об использованию inode;
- -L, —dereference — следовать по всем символическим ссылкам;
- -l, —count-links — учитывать размер файла несколько раз для жестких ссылок;
- -P, —no-dereference — не следовать по символическим ссылкам, это поведение используется по умолчанию;
- -S, —separate-dirs — не включать размер подпапок в размер папки;
- —si — выводить размер файлов и папок в системе си, используется 1000 вместо 1024;
- -s, —summarize — выводить только общий размер;
- -t, —threshold — не учитывать файлы и папки с размером меньше указанного;
- —time — отображать время последней модификации для файла или папки, вместо времени модификации можно выводить такие метки: atime, access, use, ctime;
- -X, —exclude — исключить файлы из подсчёта;
- -x, —one-file-system — пропускать примонтированные файловые системы;
- —version — вывести версию утилиты.
Здесь перечислены не все опции. Если вам надо больше, смотрите в:
Примеры использования du
Чтобы просто вывести список папок в определённом каталоге и занимаемое ими место, например, в /var выполните:
По умолчанию размер выводится в байтах. Для того чтобы размер выводился в более читабельном виде используйте опцию -h:
Или вы можете указать размер блока. Тогда точность будет немного ниже, потому что минимальная единица измерения — один блок. Например, для вывода размера папок в мегабайтах с размером блока в 1024 килобайт используйте опцию -B с параметром M:
Если надо выводить размер не только папок, но и файлов, которые там находятся используйте опцию -a:
Для того чтобы вывести только общий размер всех файлов и папок нужно применить опцию -s:
Если вы хотите вывести размер папок без вложенных в них подпапок используйте опцию -m:
Ещё можно вывести строчку с общим размером всей папки. Правда использовать эту возможность есть смысл только с опцией -S, потому что общий размер папки во всех других случаях и так отображается:
Если вам надо исключить какие-либо файлы из подсчёта, следует использовать опцию -exclude. Например, давайте исключим все лог файлы:
Чтобы данные были более наглядными их желательно отсортировать. Встроенной поддержки сортировки в du linux нет, зато можно воспользоваться утилитой sort с опцией -h. Эта опция нужна чтобы сортировались единицы измерения в понятном для чтения формате:
Выводы
В этой небольшой статье мы рассмотрели основные возможности команды du в Linux. Как видите, несмотря на то, что утилита очень простая, она позволяет посмотреть всё что необходимо. А какими программами вы пользуетесь для просмотра размера файлов и папок? Напишите в комментариях!
Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.
🐧 Список всех каталогов и сортировка по размеру на Linux
Когда дело доходит до очистки жесткого диска в системах Linux, чтобы освободить место или стать более организованным, полезно определить, какие каталоги занимают больше всего места на диске.
В этом руководстве мы покажем вам, как составить список всех каталогов и отсортировать их по их общему размеру в Linux с помощью примеров командной строки или скрипта Bash.
Как вывести список каталогов по размеру с помощью командной строки
Утилиты командной строки df и du – два лучших инструмента, которые у нас есть для измерения потребления диска в системах Linux.
Для проверки использования диска по папкам особенно полезна команда du.
При запуске du без каких-либо дополнительных параметров имейте в виду, что он будет проверять общее использование диска в каждом подкаталоге индивидуально.
В зависимости от того, насколько глубока ваша структура папок, это может быть огромное количество каталогов, и ваш терминал будет засыпан большим количеством спама.
В следующем примере мы запустим du в каталоге, полном ISO-файлов Linux, но это только один каталог по глубине.
Мы добавим параметр -h (удобочитаемый), чтобы было легче увидеть, сколько пространства занимают эти каталоги.
$ du -h 11G ./AlmaLinux 671M ./Arch Linux 14G ./CentOS 349M ./Debian 1.9G ./Fedora 415M ./Gentoo 6.5G ./Kali Linux 9.4G ./Ubuntu 44G .
Мы видим, что папка AlmaLinux использует 11 ГБ, а папка Debian – только 349 МБ.
Общий объем всех этих папок составляет 44 ГБ, как указано в последней строке.
Посмотрим, что произойдет, если у нас будет более глубокая структура папок.
$ du -h 671M ./Arch Linux 6.5G ./Debian-based/Kali Linux 9.4G ./Debian-based/Ubuntu 17G ./Debian-based 415M ./Gentoo 11G ./RHEL-based/AlmaLinux 14G ./RHEL-based/CentOS 1.9G ./RHEL-based/Fedora 27G ./RHEL-based 44G .
Как видите, каталоги «Debian-based» и «RHEL-based» имеют два и три подкаталога соответственно.
Вывод дает нам довольно подробный взгляд на то, сколько места использует каждый подкаталог.
Если у вас есть глубокая структура, мы можем использовать флаг –max-depth = N, чтобы указать du, сколько подкаталогов он должен пройти.
$ du -h --max-depth=1 671M ./Arch Linux 17G ./Debian-based 415M ./Gentoo 27G ./RHEL-based 44G .
Чтобы отсортировать эти каталоги по размеру и упростить определение того, какие из них занимают больше всего места, мы можем передать нашу команду du утилите sort.
Если вы используете параметр -h для du, убедитесь, что вы также используете его для sort.
$ du -h | sort -h 415M ./Gentoo 671M ./Arch Linux 1.9G ./RHEL-based/Fedora 6.5G ./Debian-based/Kali Linux 9.4G ./Debian-based/Ubuntu 11G ./RHEL-based/AlmaLinux 14G ./RHEL-based/CentOS 17G ./Debian-based 27G ./RHEL-based 44G .
Или, чтобы ограничить количество рекурсивно просматриваемых каталогов:
$ du -h --max-depth=1 | sort -h 415M ./Gentoo 671M ./Arch Linux 17G ./Debian-based 27G ./RHEL-based 44G .
В этих примерах мы запускали du из текущего рабочего каталога.
Имейте в виду, что вы можете указать любой каталог с помощью рассматриваемой команды – вам не обязательно находиться в каталоге, который вы проверяете.
Если вы попытаетесь запустить du в рутовом каталоге, чтобы увидеть пространство для хранения на всем диске, имейте в виду, что вам нужно выполнить эту команду с правами root, и вам следует перенаправить stderr в /dev/null, поскольку вы получите в вашем выводе много спама типа “permission denied”.
$ sudo du -h --max-depth=1 / | sort -h 2> /dev/null
Как вывести список 10 самых больших каталогов
Используя приведенные выше команды, даже небольшие каталоги будут перечислены в выходных данных команды du.
Однако во многих случаях вас могут интересовать только 10 крупнейших каталогов или какое-то их количество.
В этом случае мы можем передать наш вывод команде head, чтобы показать только самые большие каталоги.
Обратите внимание, что мы также используем команду tail, чтобы не выводить размер родительского каталога, который в данном случае не имеет значения.
Bash-скрипт для перечисления каталогов по размеру
Команд du и sort, а также параметров, которые мы рассмотрели, должно быть достаточно, чтобы помочь вам легко проверить использование диска по папкам.
Вместо того, чтобы запоминать эти различные параметры команд и вводить их каждый раз, мы можем немного облегчить себе жизнь, поместив все это в скрипт.
Следующий скрипт принимает 2 аргумента.
Первым аргументом будет имя каталога, в котором мы начнем поиск, а вторым аргументом будет количество каталогов, которые скрипт должен вывести.
#!/bin/bash if [ $# != 2 ]; then echo "Incorrect number of arguments !" >&2 echo "USAGE: sortdirbysize [DIRECTORY] <first n directories>" fi du -h --max-depth=1 $1 2> /dev/null | sort -hr | tail -n +2 | head -$2
А вот пример выполнения сценария скрипта из командной строки:
$ ./sort-dir-by-size.sh /home/linux 15
Linux commands : du – sort by size, date and other properties
Do you want to use du to sort by size, date or other properties?
du is a low-level Linux/Unix program which allows an user to get a summary of how much disk usage has been used by files and directories. Like any other standard Linux programs, the user can take advantage of many options or flags with du to modify the program output. du can also display file sizes and directories in a recursive manner.
This article will show you a few ways to sort files and directories by size, date and other properties using du command combined with sort – another standard program in Linux.
du – sort by size
By default, du output isn’t sorted and there is no flags to do that either. To be able to sort du output, we have to pipe it to another program : sort .
What sort does is that it takes lines of text and sort them based on flags and switches passed on to it. Because du outputs the size in the beginning of the line, we can leverage —numeric-sort option to have sort done the job.
The following command sorts du output by size in descending order.
du /path/to/directory | sort -n -r
The -n flag is a shorthand of —numeric-sort , which tells sort to sort lines in numerical order. The -r flag means -reverse , which reverse the default ascending order of sort .
If you want du output to be sorted in ascending order, just remove -r so the command would look like this:
du /path/to/directory | sort -n
By default, du scans all subdirectories and includes them in the output. If you want only the direct children of the path to be scanned, put -d or —max-depth into du command like below.
du /path/to/directory -d 1 | sort -n OR du /path/to/directory --max-depth=1 | sort -n
-d switch allows you to specify how deep you want du program to scan. -d=1 means only the direct children of /path/to/directory are include in the output.
du – sort by size and get top 10 biggest
Let’s suppose we want to sort du output by size in descending order, then get only 10 files and directories that eats up the largest amount of space. In order to do that, head is another standard Linux program that comes in handy.
du /path/to/directory | sort -n -r | head
The command above pipe du output to sort , which will have the result sorted in reversed order (descending). After that, the output is then piped into head , which trim it to the first 10 lines by default.
du – sort by size and get top 10 smallest
If you want to get a list of 10 smallest files and directories, you can use a similar command like the one from above example. The only difference is that we now drop -r flag to sort the output in ascending order.
du /path/to/directory | sort -n | head
du – sort by size in human-readable numbers
If you want your file size to be human-readable instead of just numbers, du has -h switch for that purpose. You just have to put -h into du command before piping it over to sort .
du /path/to/directory -h | sort -n -r
Or, combine the flags for faster typing :
du /path/to/directory -h | sort -nr
The results should look like the image below
As of GNU coreutils 7.5 released in August 2009, sort allows a -h parameter, short for —human-numeric-sort , which allows numeric suffixes of the kind produced by du -h
Sort files by time and date
du is made to estimate file space usage and nothing else. To be able to sort files by time/date, we need to use ls , which lists the files in a path along with information about them.
-l tells ls to list the directory in long listing format, which makes it easier to read.
-h is short for —human-readable , which prints file and directory sizes in human-readable form (like 1G or 100M).
-t is the most important part of the command, the output will be sorted by time if you use this flag.