Чтобы вывести список файлов в любом месте /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}'