Как я могу отобразить файлы в каталоге Unix, отсортированные по размеру, удобному для восприятия человеком, от самого большого до самого маленького размера?
Я старался
du -h | sort -V -k 1
но это не похоже на работу.
ls(1)
/sort
:
-S sort by file size
$ 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
Если у вас есть подходящая версия sort
вы можете просто использовать:
du -h | sort -rh
мой
$ sort --version
sort (GNU coreutils) 8.12
du -ha | sort -h
du
: оценка использования файлового диска.
-h : for human
-a : all files
sort
: сортировка строк текста.
-h : for human
man du; man sort
больше. У меня работает на Ubuntu v15.
ls -S
меня не было выбора в ОС. Сработало следующее:
ls -l | sort -k 5nr
У них "ключом" было указать столбец для сортировки (получить его "ключ"). Выше я указываю -k 5nr
означает сортировку по 5-му столбцу, размер (5) которого оценивается как число (n) в порядке убывания (n)
Ссылка сортировки документации для получения дополнительной информации
Я получил это, чтобы работать на меня:
ls -l | sort -g -k 5 -r
Который (я только что понял) такой же, как:
ls -lS
В отличие от ls -S
, он будет правильно обрабатывать разреженные файлы:
ls -lsh | sort -n | sed 's/^[0-9 ]* //'