Pour répertorier les fichiers n'importe où sous /tmp, triés par taille:
find /tmp -type f -exec du -k {} + | sort -k1n -k2
Pour répertorier les fichiers et les arborescences de répertoires immédiatement sous /tmp, triés par taille:
du -k /tmp/..?* /tmp/.[!.]* /tmp* 2>/dev/null | sort -k1n -k2
Pour répertorier tous les fichiers et arborescences de répertoires n'importe où sous /tmp, triés par taille:
du -ak /tmp | sort -k1n -k2
(Un exemple pour illustrer la différence entre les trois commandes: s'il y a un fichier /tmp/dir/file, la première liste de commandes /tmp/dir/file, la deuxième liste /tmp/diret la troisième liste les deux.)
Toutes les commandes ci-dessus affichent les tailles en kilo-octets. Alors que GNU du peut produire des tailles «lisibles par l'homme» (avec des multiplicateurs k, M, G, etc.), leur tri est une autre affaire. Des coreutils GNU assez récents (≥7.4) peuvent le faire: remplacez simplement du -kpar du -het sort -k1n -k2par sort -k1h -k2. Sinon, voici un script awk grossier à convertir en tailles suffixées (arrondi vers le bas); il suffit de diriger la sortsortie ci-dessus.
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}'