Aqui está minha solução, um script bash simples que só chama du de uma vez e mostra apenas diretórios de tamanho 1 MB ou maior:
#!/bin/env bash
# Usage: my_du.sh [subdirectory levels]
# For efficiency, only calls "du" once, and stores results in a temp file
# Stephen Becker, 2/23/2010
if [ $# -gt 0 ]; then
# You may prefer, as I do, to just summarize the contents of a directory
# and not view the size of its subdirectories, so use this:
du -h --max-depth $1 > temp_du_file
else
du -h > temp_du_file
fi
# Show all directories of size > 1 GB:
cat temp_du_file | grep "^\([0-9]\|\.\)\+G" | sort -nr
# Show all directories of size > 1 MB:
cat temp_du_file | grep "^\([0-9]\|\.\)\+M" | sort -nr
rm temp_du_file