почему сортировка du -h не работает должным образом?

Может быть полезно в связи с этим сообщением об ошибке sudoedit:

sudoedit:... editing files in a writable directory is not permitted

Попробуйте изменить файл sudoers, используя sudo visudo, добавьте строку:

Defaults  !sudoedit_checkdir

Подробнее здесь .

-1
26.08.2020, 10:44
2 ответа

Проблема в том, что вы видите, как работает sort -n. Он смотрит только на начальное начальное числовое значение строки (или, в более общем случае, если вы используете -k, поле )и сортирует по нему. Он вообще не понимает суффиксы KMG, поэтому просто перестает искать числа, когда натыкается на них.

Проще всего сделать то, что вы сделали во втором примере :просто используйте duбез флага -hи sortработает совершенно естественно.

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

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

Традиционно вы использовали бы awkдля этих двух последних идей, но perlили pythonтакже будут работать.

2
18.03.2021, 23:09

Попробуйте sort -h. Из руководства-h, --human-numeric-sort compare human readable numbers (e.g., 2K 1G)

Используйте sort --helpдля лучшего ознакомления с параметрами команды.

3
18.03.2021, 23:09

Теги

Похожие вопросы