Как вы сортируете du -sh /dir/*
по размеру? Я прочитал один сайт, который сказал использовать, | sort -n
но это явно не правильно. Вот пример, который не так.
[~]# du -sh /var/* | sort -n
0 /var/mail
1.2M /var/www
1.8M /var/tmp
1.9G /var/named
2.9M /var/run
4.1G /var/log
8.0K /var/account
8.0K /var/crash
8.0K /var/cvs
8.0K /var/games
8.0K /var/local
8.0K /var/nis
8.0K /var/opt
8.0K /var/preserve
8.0K /var/racoon
12K /var/aquota.user
12K /var/portsentry
16K /var/ftp
16K /var/quota.user
20K /var/yp
24K /var/db
28K /var/empty
32K /var/lock
84K /var/profiles
224M /var/netenberg
235M /var/cpanel
245M /var/cache
620M /var/lib
748K /var/spool
command-line
text-processing
disk-usage
sort
units
xenoterracide
источник
источник
sort -h
сработал для меня в Ubuntu 16.04 LTS в августе 2017 года. Сначала я нашел свой смонтированный дискcd /mnt
(смонтированный UUID в fstab). Затем я делаю,du >~/dumnt.out
затемsort -h ~/dumnt.out >~/dumntsort.out
могу сделать `tail ~ / dumntsort.out, чтобы увидеть самых больших космических свиней.Ответы:
Если у вас есть GNU coreutils (обычно в большинстве дистрибутивов Linux), вы можете использовать
-h
Опция указывает ,sort
что вход является человеком-читаемый формат (номер с блоком; 1024 на основе , так что 1023 считается менее 1K , которое происходит соответствует тому , что GNUdu -h
делает).Эта функция была добавлена в GNU Core Utilities 7.5 в августе 2009 года .
источник
-r
к сортировке, если хотите, чтобы большие были вверхуcoreutils
черезbrew
и добавить папку binPATH
в свой файл rc , и она-h
должна быть доступна.tail
команда, чтобы увидеть свиней.Попробуйте использовать флаг -k для подсчета блоков размером в 1 КБ, понятных человеку. Тогда у вас есть общая единица и вы можете легко выполнить числовую сортировку.
Вы явно не требуете человеческих юнитов, но если вы это сделали, то есть множество способов сделать это. Многие, кажется, используют вышеописанную технику блока 1K, а затем делают второй вызов du.
https://serverfault.com/questions/62411/how-can-i-sort-du-h-output-by-size
Если вы хотите увидеть добавленные единицы КБ, используйте:
источник
Если у вас нет последней версии GNU coreutils , вы можете вызывать
du
без-h
нее, чтобы получить сортируемый вывод, и создать удобный для пользователя вывод с небольшой постобработкой. Это имеет преимущество работы, даже если ваша версияdu
не имеет-h
флага.Если вы хотите, чтобы суффиксы SI (т. Е. Были кратны 1000, а не 1024), измените 1024 на 1000 в
while
теле цикла. (Обратите внимание, что это 1000 в условии предназначено, так что вы получите, например,1M
а не1000k
.)Если у вас
du
есть возможность отображать размеры в байтах (например,-b
или-B 1
- обратите внимание, что это может иметь побочный эффект при подсчете фактических размеров файлов, а не использования диска), добавьте пробел в началеs
(то естьs=" kMGTEPYZ";
) или добавьтеif (x<1000) {return x} else {x/=1024}
в началеhuman
функция.Отображение десятичной цифры для чисел в диапазоне 1–10 оставлено читателю в качестве упражнения.
источник
Если у вас нет,
sort -h
вы можете сделать это:Это получает список du, отделяет суффикс и сортирует по нему. Так как для <1K нет суффикса, первый sed добавляет B (для байта). Второе значение sed добавляет разделитель между цифрой и суффиксом. Третий седь преобразует G в Z, так что он больше, чем M; если у вас есть терабайтные файлы, вам придется конвертировать G в Y и T в Z. Наконец, мы сортируем по двум столбцам, затем заменяем суффикс G.
источник
На OS X вы можете установить необходимые coreutils через Homebrew :
С этим у вас будет
gsort
, что включает в себя параметр-h
командной строки.источник
Этот маленький скрипт на Perl делает свое дело. Сохраните как
duh
(или как хотите) и назовитеduh /dir/*
источник
Поскольку Mac OS X не имеет
-h
опции дляsort
, я попробовал и выучилsed
иawk
для первой попытки:это длинная очередь. Расширено, это:
Я попробовал это на Mac OS X Mavericks, Yosemite, Ubuntu 2014-04 с
awk
настройками по умолчаниюawk
(то естьnawk
потому, что обаawk
иnawk
указывают на/usr/bin/mawk
) или gawk, и все они работали.Вот пример вывода на Mac:
вместо этого
du -sk *
я увидел в ответе @ Stefan, где также отображается общий итог без обхода точки монтирования файловой системы, используяdu -skcx *
источник
Вот что я использую в Ubuntu 10.04, CentOS 5.5, FreeBSD и Mac OS X.
Я позаимствовал эту идею у www.geekology.co.za/ и earthinfo.org , а также печально известных уток из «Linux Server Hacks» О'Рейли. Я все еще приспосабливаю это к своим потребностям. Это все еще в стадии разработки (как, я работал над этим в поезде этим утром.):
Вот вывод:
источник
du -cks -x *
? (со звездочкой)ducks
,chmod a+x ducks
а затем использовать его./ducks
для запуска? Тогда я вижу только общее использование диска как в Mac OS X, так и в Ubuntu 2014-10. Я также попытался поставитьducks() { ...}
определение в.bashrc
и затем использовать ,ducks
чтобы запустить его, и то же самое на Mac OS X, только увидеть итогаСойти с ума с этим сценарием -
источник
В отсутствие GNU
sort -h
это должно работать в большинстве сред UNIX:источник
Он обрабатывает имена файлов с пробелами или апострофами и работает в системах, которые не поддерживают
xargs -d
илиsort -h
:что приводит к:
источник
Это позволит отсортировать вывод в порядке убывания размера:
Это позволит отсортировать вывод в порядке увеличения размера:
PS: это можно использовать для сортировки по любому столбцу, но значения этого столбца должны быть в том же формате
источник
sort -k1rn
эквивалентенsort -rn
и просто сортирует численно на основе начальной последовательности десятичных цифр в каждой строке. Он не понимает , с плавающей точкой, и она не понимаетk
,M
,G
... суффиксы. 10.1k будет считаться больше, чем 1.23GПроверено на солярисе!
Это приведет к рекурсивному выводу всех размеров каталогов, внизу будет самый большой каталог в гигабайтах, а вверху самый маленький в килобайтах.
источник
Самое большое внизу:
источник
Команда:
du -ah . | sort -k1 -h | tail -n 50
Объяснение:
du -ah .
sort -k1 -h | tail -n 50
источник
Сортировать по размеру в МБ
источник
du -h
(удобочитаемые выходные данные), отсортированные численно. Вы не даете ответ на это. Вы также можете связать свою учетную запись UNIX-SE с другими учетными записями, которые есть на других сайтах SE.Этот скрипт еще проще:
источник
для OSX
источник
-k
просто отмена,-h
и если да, то как это обеспечивает удобочитаемый вывод, запрошенный OP.