Linux сортировка каталогов по размеру

Содержание
  1. Как в Linux вывести список всех файлов каталога, упорядоченный по размеру
  2. Как отсортировать файлы по размеру с помощью команды ls в Linux
  3. 1) Перечислить содержимое содержимого каталога при сортировке по размеру
  4. 2) Список содержимого каталога с сортировкой по размеру
  5. 3) Сортировка выходных данных и размеров в удобном формате для чтения (например, 1K 48M 1G)
  6. Бонусные советы
  7. 4) Список в алфавитном порядке сортировки
  8. 5) Список в обратном порядке по алфавиту
  9. 6) Список скрытого содержимого каталога в алфавитном порядке сортировки
  10. 7) Список содержимого каталога в алфавитном порядке сортировки
  11. 🐧 Список всех каталогов и сортировка по размеру на Linux
  12. Как вывести список 10 самых больших каталогов
  13. Bash-скрипт для перечисления каталогов по размеру
  14. Команда du в Linux
  15. Синтаксис и опции команды du
  16. Примеры использования du
  17. Выводы
  18. Как отсортировать вывод du -h по размеру
  19. Ответ 1
  20. Ответ 2
  21. Ответ 3
  22. Ответ 4
  23. Ответ 5
  24. Ответ 7
  25. Ответ 8
  26. Ответ 9
  27. Ответ 10
  28. Ответ 11
  29. Ответ 12
  30. Ответ 13
  31. Ответ 14
  32. Ответ 15
  33. Ответ 19
  34. Ответ 20
  35. Ответ 21
  36. Ответ 23
  37. Ответ 24

Как в Linux вывести список всех файлов каталога, упорядоченный по размеру

Оригинал: How to List All Files Ordered by Size in Linux
Автор: Aaron Kili
Дата публикации: January 18, 2020.
Перевод: В.Костромин
Дата перевода: 4 мая 2020 г.

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

Чтобы получить список фалов в каком-то каталоге, откройте окно терминала и задайте приведенные ниже команды. Обратите внимание, что будучи запущена без параметров, команда ls выведет список файлов в текущем каталоге.

В следующем примере опция -l задает вариант вывода списка в длинном формате, а опция -a указывает ls , что нужно вывести все содержимое каталога, включая скрытые файлы и указание на родительский каталог (.) . Для того, чтобы строки . и .. не показывались, используйте опцию -A вместо -a .

Список всех файлов в каталоге

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

Список файлов, отсортированный по размеру

Вы можете получить отображение размера файла в человеко-читаемом формате, если добавите опцию -h как показано в следующем примере.

Список файлов, отсортированный по размеру, в человеко-читаемом формате

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

Список файлов, отсортированный по размеру в порядке возрастания

Кроме того, вы можете получить рекурсивный список файлов в подкаталогах, если используете опцию -R .

Рекурсивный список файлов в подкаталогах

Вы можете найти другие статьи о консольных командах, опубликованные на нашем сайте:

Источник

Как отсортировать файлы по размеру с помощью команды ls в Linux

Если вы новый пользователь в мире Linux, команда ls является самой популярной и очень полезной командой для перечисления содержимого каталогов.

В этой статье мы объясним, как использовать параметр сортировки ls для отображения содержимого каталога по размеру.

1) Перечислить содержимое содержимого каталога при сортировке по размеру

Чтобы перечислить содержимое определенного каталога с сортировкой по размеру, мы будем использовать опции -lS с командой ls.

Чтобы указать размер файла, мы будем использовать параметр -s с командой ls.

2) Список содержимого каталога с сортировкой по размеру

Чтобы перечислить содержимое определенного каталога с сортировкой по размеру, мы будем использовать опции -lSr с командой ls.

3) Сортировка выходных данных и размеров в удобном формате для чтения (например, 1K 48M 1G)

для сортировки выходных данных и размеров в человекочитаемом формате мы будем использовать -h с командой ls.

Кроме того, мы можем выводить размеры в читаемом формате для конкретного расширения.

Бонусные советы

4) Список в алфавитном порядке сортировки

Чтобы перечислить содержимое определенного каталога с сортировкой по алфавиту, мы будем использовать команду ls только без опции, потому что по умолчанию используется алфавитная сортировка.

Чтобы перечислить содержимое определенного каталога с подробной информацией, добавьте путь к каталогу.

5) Список в обратном порядке по алфавиту

Чтобы перечислить содержимое определенного каталога с подробными сведениями в обратном порядке сортировки по алфавиту, мы будем использовать опции -lr с командой ls.

6) Список скрытого содержимого каталога в алфавитном порядке сортировки

Чтобы отобразить скрытое содержимое определенного каталога, мы будем использовать опции -a или -all с командой ls.

7) Список содержимого каталога в алфавитном порядке сортировки

Чтобы показать содержимое определенного каталога с подробными сведениями, такими как права доступа к файлам, количество ссылок, имя владельца и владельца группы, размер файла, время последней модификации и имя файла / каталога, мы будем использовать -l с командой ls.

Читайте также:  Acer aspire switch 10 windows 10 64 bit

Источник

🐧 Список всех каталогов и сортировка по размеру на Linux

Когда дело доходит до очистки жесткого диска в системах Linux, чтобы освободить место или стать более организованным, полезно определить, какие каталоги занимают больше всего места на диске.

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

Как вывести список каталогов по размеру с помощью командной строки

Утилиты командной строки df и du – два лучших инструмента, которые у нас есть для измерения потребления диска в системах Linux.

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

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

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

В следующем примере мы запустим du в каталоге, полном ISO-файлов Linux, но это только один каталог по глубине.

Мы добавим параметр -h (удобочитаемый), чтобы было легче увидеть, сколько пространства занимают эти каталоги.

Мы видим, что папка AlmaLinux использует 11 ГБ, а папка Debian – только 349 МБ.

Общий объем всех этих папок составляет 44 ГБ, как указано в последней строке.

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

Как видите, каталоги «Debian-based» и «RHEL-based» имеют два и три подкаталога соответственно.

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

Если у вас есть глубокая структура, мы можем использовать флаг –max-depth = N, чтобы указать du, сколько подкаталогов он должен пройти.

Чтобы отсортировать эти каталоги по размеру и упростить определение того, какие из них занимают больше всего места, мы можем передать нашу команду du утилите sort.

Если вы используете параметр -h для du, убедитесь, что вы также используете его для sort.

Или, чтобы ограничить количество рекурсивно просматриваемых каталогов:

В этих примерах мы запускали du из текущего рабочего каталога.

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

Если вы попытаетесь запустить du в рутовом каталоге, чтобы увидеть пространство для хранения на всем диске, имейте в виду, что вам нужно выполнить эту команду с правами root, и вам следует перенаправить stderr в /dev/null, поскольку вы получите в вашем выводе много спама типа “permission denied”.

Как вывести список 10 самых больших каталогов

Используя приведенные выше команды, даже небольшие каталоги будут перечислены в выходных данных команды du.

Однако во многих случаях вас могут интересовать только 10 крупнейших каталогов или какое-то их количество.

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

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

Bash-скрипт для перечисления каталогов по размеру

Команд du и sort, а также параметров, которые мы рассмотрели, должно быть достаточно, чтобы помочь вам легко проверить использование диска по папкам.

Вместо того, чтобы запоминать эти различные параметры команд и вводить их каждый раз, мы можем немного облегчить себе жизнь, поместив все это в скрипт.

Следующий скрипт принимает 2 аргумента.

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

А вот пример выполнения сценария скрипта из командной строки:

Источник

Команда 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 — вывести версию утилиты.
Читайте также:  How to install telegram on linux ubuntu

Здесь перечислены не все опции. Если вам надо больше, смотрите в:

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

Чтобы просто вывести список папок в определённом каталоге и занимаемое ими место, например, в /var выполните:

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

Или вы можете указать размер блока. Тогда точность будет немного ниже, потому что минимальная единица измерения — один блок. Например, для вывода размера папок в мегабайтах с размером блока в 1024 килобайт используйте опцию -B с параметром M:

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

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

Если вы хотите вывести размер папок без вложенных в них подпапок используйте опцию -m:

Ещё можно вывести строчку с общим размером всей папки. Правда использовать эту возможность есть смысл только с опцией -S, потому что общий размер папки во всех других случаях и так отображается:

Если вам надо исключить какие-либо файлы из подсчёта, следует использовать опцию -exclude. Например, давайте исключим все лог файлы:

du -hac —exclude=»*.log»

Чтобы данные были более наглядными их желательно отсортировать. Встроенной поддержки сортировки в du linux нет, зато можно воспользоваться утилитой sort с опцией -h. Эта опция нужна чтобы сортировались единицы измерения в понятном для чтения формате:

du -h /var | sort -h

Выводы

В этой небольшой статье мы рассмотрели основные возможности команды du в Linux. Как видите, несмотря на то, что утилита очень простая, она позволяет посмотреть всё что необходимо. А какими программами вы пользуетесь для просмотра размера файлов и папок? Напишите в комментариях!

Источник

Как отсортировать вывод 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=

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

Вывод:

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

Ответ 4

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

du -scBM | sort -n

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

Ответ 5

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

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

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

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

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

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

Читайте также:  Управление права пользователей linux

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).

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

Ответ 23

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

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

Ответ 24

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

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

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

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

Источник

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