1. Главная
  2. /
  3. Linux
  4. /
  5. shell
  6. /
  7. du получить отсортированный по размеру список папок и файлов

du получить отсортированный по размеру список папок и файлов

shell, Soft
, , ,

Если вы достаточно часто пользуетесь системой Linux, вы уже должны быть знакомы с командой du. Команда du позволяет проверить или вывести в консоли использование пространства на диске. С ее помощью можно посмотреть текущее использование диска для набора файлов и папок.

Возможность получить список папок, отсортированный по размеру, может быть полезна, когда вы пытаетесь найти файлы или папки, которые занимают больше всего места на диске. Однако команда или утилита du не имеет возможности сортировки по размеру.

Один из вариантов — направить вывод через утилиту sort. sort — это универсальная утилита, которая может использоваться во многих различных сценариях для сортировки текста или чисел. Возможно, это также один из общих методов, который можно использовать для сортировки практически любого командного вывода в Linux.

По умолчанию du выводит значения в kb или килобайтах. Поэтому, чтобы отсортировать файлы и папки по размеру, вы можете использовать следующую команду

du /path-folder | sort -n

Опция командной строки -n или -numeric-sort указывает, что сортируемые значения являются целыми числами и должны быть отсортированы численно. Вы можете использовать опцию -r или -reverse для сортировки в обратном порядке.

Очевидно, что это будет работать до тех пор, пока размер выводится в виде числа, что и происходит, если вы не используете никаких аргументов командной строки для изменения отображаемого размера. Это также работает с опцией -b или -bytes. Но иногда требуется вывести размер в удобочитаемом формате. Для этого можно использовать опцию -h или -human-readable в du.

du -hs /path-folder

Когда вы распечатываете вывод du в человекочитаемом формате, команда sort будет работать некорректно. Если вы используете одну из последних версий sort, то вы можете использовать опцию -h или -human-numeric-sort команды sort для сортировки входных данных.

du -hs * | sort -h

сортировка вывода du в linux

Пакет GNU coreutils, поддерживающий эту опцию, был выпущен некоторое время назад в 2009 году (версия 7.5), поэтому вполне вероятно, что у вас уже есть по крайней мере эта версия или вы можете обновить свои пакеты. Если по какой-то причине у вас более старый пакет, то вам придется использовать некоторые сценарии linux для достижения того же результата.

Существует несколько различных способов сделать это, и большинство из них включают либо двойной подсчет, либо выполнение команды du дважды. Ни один из них не является оптимальным или эффективным. Один из самых простых способов сортировки без опции -h в sort — это сначала использовать команду du без опции -h, отсортировать вывод, а затем снова запустить du на отсортированном списке папок.

du -b * | sort -n | cut -f2-

В приведенном выше примере du выводит размер в байтах, после чего он сортируется по порядку. Последняя часть использует утилиту cut для печати только имени папки или файла, отсортированного по размеру. Теперь мы можем снова передать этот вывод в du с опцией -h, чтобы распечатать размер в человекочитаемом виде.

du -h $(du -b * | sort -n | cut -f2-)

вывод du, отсортированный с помощью sort в linux

Вышеприведенный способ должен вывести размеры файлов и папок в удобочитаемом формате, отсортированные по размеру.

Поделиться ссылкой на статью

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Заполните поле
Заполните поле
Пожалуйста, введите корректный адрес email.
Вы должны согласиться с условиями для продолжения

Категории

Меню