Мне нужно получить список читабельных выводов.
Однако du
не имеет опции «сортировать по размеру», и конвейер sort
не работает с удобочитаемым флагом.
Например, работает:
du | sort -n -r
Выводит отсортированное использование диска по размеру (по убыванию):
du |sort -n -r
65108 .
61508 ./dir3
2056 ./dir4
1032 ./dir1
508 ./dir2
Тем не менее, запуск его с понятным для человека флагом не сортирует должным образом:
du -h | sort -n -r
508K ./dir2
64M .
61M ./dir3
2.1M ./dir4
1.1M ./dir1
Кто-нибудь знает способ сортировки du -h
по размеру?
du
но добавляете -h кsort
команде. Вы можете добавить-rh
так, чтобы самые большие были первыми в файле, в противном случае вам нужноtail
увидеть космических свиней.Ответы:
Начиная с версии GNU coreutils 7.5, выпущенной в августе 2009 года,
sort
разрешен-h
параметр, который допускает числовые суффиксы типаdu -h
:Если вы используете сортировку, которая не поддерживает
-h
, вы можете установить GNU Coreutils. Например, на более старой Mac OS X:Из
sort
руководства :-h, --human-numeric-sort compare human readable numbers (e.g., 2K 1G)
источник
du -BM | sort -nr
обходной путь - он достаточно читабелен человеком, и он сортируется, если кто-то застрял с более старыми coreutils.du -hs * | gsort -h
du -BM
печатает все в мегабайтах, поэтому файл размером 168K будет отображаться как 0M. Если нет какой-то другой версии, о которой я не знаю. Моя версияdu
показывает только целочисленные значения в мегабайтах.источник
@ Дуглас Лидер, еще один ответ: Сортируйте удобочитаемый вывод du -h с помощью другого инструмента. Понравился Perl!
Разделите на две строки, чтобы соответствовать дисплею. Вы можете использовать его таким образом или сделать его однострочным, он будет работать в любом случае.
Выход:
РЕДАКТИРОВАТЬ: после нескольких раундов игры в гольф на PerlMonks , окончательный результат является следующим:
источник
stderr
из-за того, чтоdie
вы можете изменить его, чтобы включить егоstdout
?die
a,print
и он перейдет кstdout
. Это просто еще два персонажа.Существует очень полезный инструмент, который я использую под названием ncdu, который предназначен для поиска этих надоедливых папок и файлов с высоким уровнем использования диска и их удаления. Он консольный, быстрый и легкий, и имеет пакеты для всех основных дистрибутивов.
источник
du
, если вы просто хотите определить большие каталоги.источник
du -k --total
, выдает ошибку в концеdu: cannot access 'total': No such file or directory
head
, добавив `| голова -50` в конце.Насколько я вижу, у вас есть три варианта:
du
сортировку перед отображением.sort
для поддержки размеров человека для числовой сортировки.Вы также можете сделать
du -k
и жить с размерами в КиБ.Для варианта 3 вы можете использовать следующий скрипт:
источник
У меня также была эта проблема, и я в настоящее время использую обходной путь:
Это не приведет к получению масштабированных значений, но всегда даст размер в мегабайтах. Это менее чем идеально, но для меня это лучше, чем ничего (или отображение размера в байтах).
источник
Нашел этот пост в другом месте. Поэтому этот сценарий оболочки будет делать то, что вы хотите, не вызывая
du
все дважды. Он используетawk
для преобразования необработанных байтов в читабельный формат. Конечно, форматирование немного отличается (все печатается с точностью до одного десятичного знака).Запуск этого в моем
.vim
каталоге приводит к:(Я надеюсь, что 3,6M цветовых схем не является чрезмерным.)
источник
Эта версия использует
awk
для создания дополнительных столбцов для ключей сортировки. Звонит толькоdu
один раз. Вывод должен выглядеть точно так жеdu
.Я разбил его на несколько строк, но он может быть объединен в одну строку.
Объяснение:
Попробуйте без
cut
команды, чтобы увидеть, что он делает.Вот версия, которая выполняет сортировку в скрипте AWK и не нуждается в
cut
:источник
du -sh *
показ только непосредственных файлов и каталогов без рекурсивного спуска.Вот пример, который показывает каталоги в более краткой форме. Он обрабатывает пробелы в каталоге / именах файлов.
источник
сортировать файлы по размеру в мегабайтах
источник
У меня есть простая, но полезная оболочка для Python du, которая называется dutop . Обратите внимание, что мы (сопровождающие coreutils) рассматриваем возможность добавления функциональности для сортировки для прямой сортировки «человеческого» вывода.
источник
sort
флаг)Есть еще один:
Я начинаю любить Perl. Возможно, вам придется сделать
первый. Всем хакерам Perl: Да, я знаю, что сортировку также можно выполнять в Perl. Вероятно, часть du тоже.
источник
Этот фрагмент был бесстыдно заимствован из «Жан-Пьера» с http://www.unix.com/shell-programming-scripting/32555-du-h-sort.html . Есть ли способ, которым я могу лучше кредитовать его?
источник
23423423432423
Используйте флаг "-g"
И в моем каталоге / usr / local выдает следующий результат:
источник
Другой:
источник
Вот простой метод, который я использую, очень низкое использование ресурсов и дает вам то, что вам нужно:
источник
Нашел этот на линии ... кажется, работает нормально
источник
Я узнал awk от придумывания этого примера вчера. Это заняло некоторое время, но это было очень весело, и я научился пользоваться awk.
Он запускается только du один раз, и его вывод очень похож на du -h
Показывает числа ниже 10 с одним десятичным знаком.
источник
du -cka --max-глубина = 1 / var / log | сортировать -rn | голова -10 | awk '{print ($ 1) / 1024, "МБ", $ 2'}
источник
Если вам нужно обрабатывать пробелы, вы можете использовать следующее
Дополнительный оператор sed поможет устранить проблемы с папками с такими именами, как поддержка приложений
источник
Вуаля:
источник
http://dev.yorhel.nl/ncdu
команда: ncdu
Навигация по каталогам, сортировка (имя и размер), графики, удобочитаемые и т. Д.
источник
Другое
awk
решение -источник
Я использовал решение, предоставленное @ptman, но недавнее изменение сервера сделало его более нежизнеспособным. Вместо этого я использую следующий скрипт bash:
источник
du -d 1
Синтаксис BSD поддерживается GNU du с тех пор, как coreutils 8.6 был выпущен в 2010 году (хотя его первая версия Red Hat была RHEL 7 в 2014 году), поэтому вам больше не нужно--maxdepth=1
. Я только узнал об этом недавно сам.источник
Здесь много ответов, многие из которых являются дубликатами. Я вижу три тенденции: прохождение второго вызова du, использование сложного кода shell / awk и использование других языков.
Вот POSIX-совместимое решение с использованием du и awk, которое должно работать в любой системе.
Я выбрал немного другой подход, добавив,
-x
чтобы убедиться, что мы остаемся в одной файловой системе (эта операция мне всегда нужна, когда у меня мало места на диске, так зачем отсеивать то, что я смонтировал в этом дереве FS или переместил символьная ссылка назад) и отображение постоянных единиц для облегчения визуального анализа. В этом случае я обычно выбираю не сортировать, чтобы лучше видеть иерархическую структуру.(Так как это в последовательных единицах, вы можете добавить,
| sort -n
если вы действительно хотите отсортировать результаты.)Это отфильтровывает любой каталог, чье (совокупное) содержимое не может превышать 512 МБ, а затем отображает размеры в гигабайтах. По умолчанию, ий использует размер блока 512 байт (так состояние AWK от 2 20 блоков 512 и его- 21 делитель преобразует единицы в ГБ - мы могли бы использовать
du -kx
с$1 > 512*1024
иs/1024^2
более читаемым человеком). Внутри условия awk мы устанавливаемs
размер, чтобы мы могли удалить его из строки ($0
). При этом сохраняется разделитель (который свернут в один пробел), поэтому окончательный%s
представляет пробел, а затем имя агрегированного каталога.%7s
выравнивает округленный%.2f
размер ГБ (увеличьте,%8s
если у вас> 10 ТБ).В отличие от большинства решений здесь, это правильно поддерживает каталоги с пробелами в их именах (хотя каждое решение, включая это, будет неправильно обрабатывать имена каталогов, содержащие разрывы строк).
источник
По крайней мере, с обычными инструментами это будет сложно из-за формата, в котором читаемые человеком цифры (обратите внимание, что сортировка делает «хорошую работу» здесь, так как сортирует числа - 508, 64, 61, 2, 2 - это просто не могу отсортировать числа с плавающей точкой с дополнительным множителем).
Я бы попробовал все наоборот - использовать вывод из "du | sort -n -r", а затем преобразовать числа в понятный человеку формат с помощью некоторого сценария или программы.
источник
Что вы можете попробовать это:
Надеюсь, это поможет.
источник
xargs
поэтому эта форма была необходима. Однако для файлов с пробелами в них вам нужно установить IFS:IFS=$'\n'
источник