Щоб перелічити файли в будь-якому місці під /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}'