Как я могу отсортировать все файлы по размеру в каталоге?


48

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

Я пытался

du -h | sort -V -k 1 

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


Не могли бы вы уточнить, ожидаете ли вы, что размеры подкаталогов также появятся в выводе, а также ищите ли вы видимый размер файлов или фактический размер, который они используют на диске?
Jlliagre

Ответы:


53

ls(1) /sort:

-S     sort by file size

1
-Sбольше не является допустимым аргументом сортировки, по крайней мере, в Ubuntu. Приведенный ниже ответ @alex работал на меня. Ссылка для ответа superuser.com/a/990437/528836 .
Прасанна

33
$ 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

16

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

du -h | sort -rh

мой

$ sort --version
sort (GNU coreutils) 8.12

4

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

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


4

du -ha | sort -h

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

-h : for human
-a : all files

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

-h : for human

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


1

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

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

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

ls -lS

0

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

ls -lsh | sort -n | sed 's/^[0-9 ]* //'
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.