Du linux sorted by size

Du linux sorted by size

Уделим немного времени знакомству с консольными утилитами ls, du и sort в ОС Linux. Рассмотрим их использование с основными ключами и в различных комбинациях, для сортировки файлов и директорий (папок) по размеру.

Использование утилиты ls в linux

1. Вывод списка файлов и директории.

Данный вывод неинформативен поэтому лучше использовать ls вместе с ключами.

2. Вывод списока файлов и директорий, включая скрытые файлы в виде «расширеного списка».

«-l» — выводит расширеный листинг.

«-h» — выводит размер файлов в удобном для чтения формате (GB/MB/KB).

«-a» — выводит все файлы, в том числе и «скрытые».

Стоит отметить, что «ls» не может вычислять размер директорий, поэтому, для вывода размера директорий / каталогов / папок будем использовать утилиту «du».

Использование утилиты du в linux

1. Вывод списка директории c вложенными директориями.

По-умолчанию «du» выводит размер, не только каждой директории, но и всех вложенных в нее директорий /каталогов / папок.

2. Вывод списка директории без вложенных директорий.

3. Вывод списка директории c одним уровнем вложения.

«—max-depth=1» — задает уровень вложенности директорий равной 1.

«-h» — выводит размер файлов в удобном для чтения формате (GB/MB/KB).

Использование утилиты sort в linux

1. Вывод папок отсортированных по размеру.

«-n» — сортировка по числам.

«-r» — отображает в выводе самые большие числа вначале.

2. Вывод директорий / каталогов / папок отсортированных по размеру в мегабайтах.

3. Вывод директорий / каталогов / папок и файлов отсортированных по размеру.

4. Вывод директорий и файлов отсортированных по размеру и преведенный к удобному виду для восприятия размера (KB/MB/GB).

Самый сложный, но в тоже время самый информативный и красивый вывод.

5. Вывод директорий /каталогов / папок и файлов отсортированных по размеру в файл.

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

На этом все. Существует еще множество различных вариантов сортировки, так что предлагайте свои. Комментируем, подписываемся ну и всем пока:)

1″ :pagination=»pagination» :callback=»loadData» :options=»paginationOptions»>

Источник

Как отсортировать вывод du -h по размеру

Мне нужно получить список вывода, который может читать человек.

Однако у du нет опции «сортировать по размеру», sort не работает с флагом, понятным человеку.

Выводит отсортированное использование диска по размеру (по убыванию):

Однако запуск его с флагом, понятным для человека, не выполняет сортировку должным образом:

Кто-нибудь знает способ сортировки du -h по размеру?

Ответ 1

Начиная с версии GNU coreutils 7.5, выпущенной в августе 2009 года, sort допускает параметр -h, который позволяет использовать числовые суффиксы, подобные тем, что выдает du -h:

Если же использовать сортировку, которая не поддерживает -h, можно установить GNU Coreutils. Например, на старой версии Mac OS X:

rew install coreutils

du -hs * | gsort -h

Из sort руководства:

-h, —human-numeric-sort compare human readable numbers (e.g., 2K 1G)

Ответ 2

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

Ответ 3

Отсортируйте человекочитаемый вывод du -h с помощью другого инструмента. Например, Perl!

du -h | perl -e «sub h<%h=(K=>10,M=>20,G=>30);($n,$u)=shift=

Можно разделить на несколько строк, чтобы поместить на экране, или оставить как есть, он будет работать в любом случае.

Читайте также:  Брандмауэр windows блокирует локальную сеть

Вывод:

Окончательный результат следующий:

Ответ 4

У меня тоже была такая проблема, и сейчас я использую другой способ:

du -scBM | sort -n

Это не даст масштабированных значений, но всегда будет отображать размер в мегабайтах. Это не идеально, но для меня это лучше, чем ничего.

Ответ 5

Насколько я могу судить, есть три варианта:

Изменить du для сортировки перед отображением.

Изменить sort для поддержки человечески понятных размеров для числовой сортировки.

Постобработка вывода из sort для изменения базового вывода на понятный человеку.

Вы также можете сделать du -k и выводить в килобайтах.

Для 3 варианта вы можете использовать следующий сценарий:

for line in sys.stdin.readlines():

if size =1024; x/=1024)<

Запуск этой программы в моем каталоге .vim дает результат:

Ответ 7

Эта версия использует awk для создания дополнительных столбцов для ключей сортировки. Она вызывает du только один раз. Вывод должен выглядеть точно так же, как в du.

Я разбил его на несколько строк, но его можно собрать и в одну.

index(«KMG», substr($1, length($1))),

substr($1, 0, length($1)-1), $0>’ |

sort -r | cut -f2,3

Пояснения:

BEGIN — создает строку для индекса, чтобы подставить 1, 2, 3 для K, M, G для группировки по единицам, если нет единицы (размер меньше 1K), то нет совпадения и возвращается ноль (идеально!).

Выводит новые поля — единицу измерения, значение (для правильной работы альфа-сорта с добавкой нуля, фиксированной длины) и исходную строку.

Проиндексировать последний символ поля размера.

Вытащить числовую часть размера.

Сортирует результаты, отбросывает лишние столбцы.

Попробуйте без команды cut, чтобы увидеть, что она делает.

Вот версия, которая выполняет сортировку внутри сценария AWK и не требует команды cut:

index(«KMG», substr($1, length($1))),

substr($1, 0, length($1)-1), $0);

for (i = c; i >= 1; i—)

Ответ 8

Вот пример, который показывает каталоги в более компактной обобщенной форме. Он обрабатывает пробелы в именах каталогов.

% du -s * | sort -rn | cut -f2- | xargs -d «\n» du -sh

7.2G VirtualBox VMs

Сортировка файлов по размеру в МБ:

du —block-size=MiB —max-depth=1 path | sort -n

Ответ 9

У меня есть простая, но полезная обертка для du на языке python под названием dutop. Обратите внимание, что мы (сопровождающие coreutils) рассматриваем возможность добавления функциональности для сортировки «человеческого» вывода напрямую.

Ответ 10

$ du -B1 | sort -nr | perl -MNumber::Bytes::Human=format_bytes -F’\t’ -lane ‘print format_bytes($F[0]).»\t».$F[1]’

Мне начинает нравиться perl. Возможно, вам придется сделать так:

Ответ 11

Этот фрагмент был заимствован у «Жан-Пьера» с http://www.unix.com/shell-programming-scripting/32555-du-h-sort.html . Можно ли верить ему?

du -k | sort -nr | awk ‘

$1 = sprintf(«%.1f %s», $1, Units[u]);

Ответ 12

Используйте флаг «-g»:

compare according to general numerical value

В моем каталоге /usr/local выводится примерно так:

Ответ 13

Нашел это в сети . похоже, работает нормально:

du -sh * | tee /tmp/duout.txt | grep G | sort -rn ; cat /tmp/duout.txt | grep M | sort -rn ; cat /tmp/duout.txt | grep K | sort -rn ; rm /tmp/duout.txt

Ответ 14

Ответ 15

Я изучил awk, придумав вчера этот пример. Это заняло некоторое время, но было очень весело, и я научился использовать awk.

Он запускает du один раз, и его вывод очень похож на du -h

2.35MB ./Work Docs

1.59MB ./Work Docs/Work

584.00KB ./scan 1.pdf

16.00KB ./Membership Transmittal Template.xlsx

Ответ 19

du -h /folder/subfolder —max-depth=1 | sort -hr

Можно добавить, | head -10, чтобы найти первые 10 или любое количество подпапок в указанном каталоге.

Ответ 20

du -sk /var/log/* | sort -rn | awk ‘‘ | xargs -ia du -hs «a»

Ответ 21

Используйте следующий сценарий bash:

# list contents of the current directory by increasing

#+size in human readable format

# for some, «-d 1» will be «—maxdepth=1»

du -k -d 1 | sort -g | awk ‘

(Поскольку это последовательный вывод, вы можете добавить | sort -n, если вам действительно нужен отсортированный результат).

Эта команда, отфильтрует любой каталог, чье (суммарное) содержимое не превышает 512 МБ, а затем отображдает размеры в гигабайтах. По умолчанию du использует размер блока 512 байт (поэтому условие awk в 220 блоков равно 512 МБ, а его делитель 221 преобразует единицы измерения в ГБ — мы могли бы использовать du -kx с $1 > 512*1024 и s/1024^2 для лучшей человекочитаемости). Внутри условия awk мы устанавливаем s в размер, чтобы можно было удалить его из строки ($0). При этом сохраняется разделитель (который сворачивается в один пробел), поэтому конечный %s представляет собой пробел, а затем имя объединенного каталога. %7s округляет размер %.2f GB (увеличивает до %8s, если у вас >10TB).

Читайте также:  Windows terminal server patch

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

Ответ 23

По крайней мере, с помощью обычных инструментов это будет трудно сделать из-за формата человекочитаемых чисел (обратите внимание, что sort все делает правильно, поскольку сортирует числа — 508, 64, 61, 2, 2 — он просто не может сортировать числа с плавающей запятой с дополнительным множителем).

Я бы попробовал сделать все наоборот — использовать вывод «du | sort -n -r», а затем преобразовать числа в человекочитаемый формат с помощью какого-нибудь скрипта или программы.

Ответ 24

Вы можете попробовать следующее:

for i in «du -s * | sort -n | cut -f2»

Мы будем очень благодарны

если под понравившемся материалом Вы нажмёте одну из кнопок социальных сетей и поделитесь с друзьями.

Источник

Sort “du” Command by Size- Output Largest to Smallest

“du” stands for disk usage, and as the name implies, this command is very useful in getting disk-related information in Linux. This is a very flexible command that can be combined with different parameters to get the desired output.

In today’s tutorial, we will be guiding you on the method of sorting the output of the “du” command in descending order, i.e., largest to smallest in Linux.

Note: We have used a Linux Mint 20 machine to demonstrate this method. However, you can also perform the very same method on a Ubuntu 20.04 system or a Debian 10 system.

Method of Sorting the “du” Command Output by Size (Largest to Smallest)

For sorting the output of the “du” command by size (largest to smallest), i.e., in descending order, you will have to perform the following steps:

Step 1: Check the Help Manual of the “du” Command (Optional)
Before using any command in Linux, it is always good to check its help manual so that you may get good knowledge about its correct usage. For checking the help manual of the “du” command, you will have to execute the command shown below in your terminal:

The help manual of the “du” command in a Linux Mint 20 system is shown in the following image:

Step 2: Sort the Output of the “du” Command by Size (Largest to Smallest)
For sorting the output of the “du” command by size (largest to smallest) in Linux Mint 20, you will have to execute the command shown below in your terminal:

By piping the output of the “du” command to the “sort” command and combining it with the “-n” and “-r” flags, you will be able to get the output in descending order, i.e., largest to smallest, as shown in the following image:

Conclusion

By executing a single command that has been shared with you in this article, you will be able to sort the output of the “du” command by size (largest to smallest) very conveniently. Also, if you want the output of this command to be displayed in any other form, then you can try to explore its help manual for figuring out the right way to do so.

Читайте также:  Как запустить обычную загрузку windows

About the author

Karim Buzdar

Karim Buzdar holds a degree in telecommunication engineering and holds several sysadmin certifications. As an IT engineer and technical author, he writes for various web sites. He blogs at LinuxWays.

Источник

how to sort du command output by size in linux

If you use a Linux system often enough, you should already be familiar with the du command. The du command allows you to check or print the file space usage. You can use it to print out the current disk usage for a set of files and folders.

The ability to print out folders sorted by size can be useful when you are trying find the files or folders that is consuming the most space on your disk. However the du command or utility does not have an option to sort by size.

One of the options you have is to pipe the output through the sort utility. The sort is a generic utility that can be used in many different scenarios to sort text or numbers. This is probably also one of the generic methods you could use to sort almost any command output in Linux.

By default the du output the values in kb or kilobytes. So, to sort the files and folder by size, you could use the following command

$ du /path | sort -n

The -n or –numeric-sort command line option specifies that the values to be sorted are integers and are to be sorted numerically. You can use the -r or –reverse option to sort it in the reverse order.

Obviously this will work as long as the size is printed out as a number, which is the case when you don’t use any command line arguments to modify the size shown. It also works with the -b or –bytes option as well. But sometimes, you want to print out the size in a human readable format. You can use the -h or –human-readable option of du to do that.

When you print out the output of du in a human readable format, the sort command will not work correctly anymore. If you use one of the latest version of sort, then you can use the -h or –human-numeric-sort option of to sort command to sort the input.

The GNU coreutils package that supports this option has been released a while back in 2009 (version 7.5), so it is very likely that you already have at least this version or you can upgrade your packages. If for some reason you have an older package, then you will have to use some linux scripting to achieve the same output.

There are several different ways to do this, and most of which includes either double counting or running du command twice. None of it is really optimal or efficient. One of the easiest ways to sort with out the -h option of sort is to first use the du command with out the -h option, sort that output and then run du again on the sorted list of folders.

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

In the above example, the du prints the size in bytes, after which it is sorted numerically. The last part uses the cut utility to print out just the folder or file name sorted according to the size. We can now pass this output again to du with the -h option to print out the human readable size.

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

The above one liner should now print out the file and folder sizes in a human readable format sorted by the size.

Источник

Оцените статью