Чтобы вывести список файлов в любом месте /tmp, отсортированный по размеру:
find /tmp -type f -exec du -k {} + | sort -k1n -k2
Чтобы вывести список файлов и деревьев каталогов, расположенных под ними /tmp, отсортированный по размеру:
du -k /tmp/..?* /tmp/.[!.]* /tmp* 2>/dev/null | sort -k1n -k2
Чтобы вывести список всех файлов и деревьев каталогов в любом месте /tmp, отсортированный по размеру:
du -ak /tmp | sort -k1n -k2
(Пример, иллюстрирующий разницу между тремя командами: если есть файл /tmp/dir/file, список первой команды, список /tmp/dir/fileвторой /tmp/dirи третий - обе).
Все приведенные выше команды показывают размеры в килобайтах. В то время как GNU du может выводить «читаемые человеком» размеры (с множителями k, M, G и т. Д.), Сортировка их - это другой вопрос. Достаточно недавно GNU coreutils (≥7.4) может это сделать: просто заменить du -kна du -hи sort -k1n -k2на sort -k1h -k2. В противном случае, вот грубый скрипт awk для преобразования в суффиксные размеры (округление вниз); просто передайте sortвывод выше в это.
awk -vFS='\t' -vOFS='\t' '{
if ($1) $1 = substr($1,1,(length($1)-1)%3+1)
substr("kMGTPEZY",(length($1)-1)/3+1,1);
print}'