If you manage a UNIX system with a large number of directories that vary in size, chances are that you’ve needed to figure out which ones are using up the most disk space. Of course if the directories are user accounts, the best way to do this is to enable quotas and use the “repquota” command. If you just have a bunch of directories, however, you can easily figure out which ones are largest by giving the correct arguments to “du” and “sort”. Here is how:
du -sk * | sort +0nr
This will display the size of all directories and sort them from largest to smallest. If you want to sort them from smallest to largest, simply remove the “r”.
du -sk * | sort +0n
If you have nested directories, you will need to incorporate foreach to recurse through and get all the directory names.

Useful command, but it doesn’t show the size of hidden directories. How could I get it to show them?
Good question… This should do it.
% du -sk .[a-z]* | sort +0nr
Thank you! This is very, very helpful.
thanks, i needed that. although i wish there was a way to show the sizes of directories and files in the same list. like why doesn’t the ls command have a flag to show recursive directory sizes?
(::)
Sort on size the dirs only
$ du –max-depth=1 . | sort -n -r