Відповіді:
Моя перша думка полягає в тому, що ви не можете використовувати -h на du що ви збираєтеся сортувати. Спробуйте:
du | sort -rn | head
У мене є (csh) псевдонім "великий", який показує 10 найбільших файлів у моєму поточному каталозі:
alias large "ls -l \!* |sort -k5 -rn |head -10"
Залежно від версії du, мені подобається наступне:
du -ckhs *
Він витягує лише розміри елементів (вид виду тільки верхнього рівня) у поточній директорії (розміри файлів і розміри дочірніх каталогів (без переліку всіх в кожному)).
Як сказав хаос, ви не можете сортувати, щоб речі з'являлися правильно з -h, але це принаймні дає хороший швидкий огляд розмірів, не вдаючись у надто детально.
Ця досить довга функція відображатиме відсортований список з доступними для читання розмірами:
dus () { du -bh ${1:+$1/}* |
awk 'BEGIN {KMG="KMG"}
{printf "%s %08.2f %s\t%s\n",
index(KMG,substr($1,length($1))),
substr($1,0,length($1)-1),
substr($1,length($1)),$0}' |
sort -r |
cut -f 2-
}
які ви можете пропустити head:
dus | head
Він приймає каталог як аргумент:
dus /usr/local
Як правило, я буду використовувати du -s * | sort -nr для цього, і працювати мій шлях в каталогах з великими розмірами. The -s опція дозволяє відображати загальну суму для кожного елемента замість рекурсії.
наприклад:
bcl@fozzy:~$ du -s * | sort -nr
171900 wiki
169932 bb.mail.tar.bz2
112772 tmp
44416 d.mail.tar.bz2
4148 src
2012 public_html
880 Mail
144 sha-search
72 logs
20 tt.txt
16 Maildir
16 brianlane_html
12 Temporary Items
12 Network Trash Folder
8 calendar_html
4 wiki_html
4 procmail.bcl
4 id_rsa.pub
4 foo.sh
4 fetchmail.bcl
4 bb.procmailrc
0 time.out