Есть несколько вариантов.
Вот конструкция на потоковом редакторе sed, которая прилепит "килобайты" к вашим циферкам:
du -k | sed -e 's_^\([0-9]*\)_\1 KB_' | sort -n
Посольку вы не указали на какой системы вы пытаетесь построить такой сортированный список, то укажу так же конструкцию для MacOS (потому что там утилита sort не имеет ключа -h):
du -sk * | sort -g | awk '{ numBytes = $1 * 1024; numUnits = split("B K M G T P", unit); num = numBytes; iUnit = 0; while(num >= 1024 && iUnit + 1 < numUnits) { num = num / 1024; iUnit++; } $1 = sprintf( ((num == 0) ? "%6d%s " : "%6.1f%s "), num, unit[iUnit + 1]); print $0; }'
А вообще, если у вас Linux с более-менее свежими пакетами, то конструкция может быть гораздо более простой:
du -hs * | sort -h