45

Как я могу отобразить файлы в каталоге Unix, отсортированные по размеру, удобному для восприятия человеком, от самого большого до самого маленького размера?

Я старался

du -h | sort -V -k 1 

но это не похоже на работу.

7 ответов7

47

ls(1) /sort:

-S     sort by file size
30
$ ls -lhS

-l     use a long listing format
-h     with -l, print sizes in human readable format (e.g., 1K 234M 2G)
-S     sort by file size
14

Если у вас есть подходящая версия sort вы можете просто использовать:

du -h | sort -rh

мой

$ sort --version
sort (GNU coreutils) 8.12
4

du -ha | sort -h

du : оценка использования файлового диска.

-h : for human
-a : all files

sort : сортировка строк текста.

-h : for human

man du; man sort больше. У меня работает на Ubuntu v15.

3

ls -S меня не было выбора в ОС. Сработало следующее:
ls -l | sort -k 5nr
У них "ключом" было указать столбец для сортировки (получить его "ключ"). Выше я указываю -k 5nr означает сортировку по 5-му столбцу, размер (5) которого оценивается как число (n) в порядке убывания (n)

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

1

Я получил это, чтобы работать на меня:

ls -l | sort -g -k 5 -r

Который (я только что понял) такой же, как:

ls -lS
0

В отличие от ls -S , он будет правильно обрабатывать разреженные файлы:

ls -lsh | sort -n | sed 's/^[0-9 ]* //'

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .