Basta remover as linhas dos subdiretórios (que pressupõem que os nomes de diretório não possuam caracteres de nova linha):
du | grep -v '/.*/'
ou:
du | awk -F/ 'NF <= 2'
Note que não será significativamente mais lento que o du --max-depth=1
do GNU, já que a parte custosa é lstat
ing de todos os arquivos que precisam ser feitos para ambos.
Se você não pode garantir que os nomes de diretório não tenham caracteres de nova linha:
du .//. | awk '
function process() {
if (p != "" && split(p, a, "/") <= 4) {
sub("//.", "", p);
print p
}
}
/\/\// {process(); p=$0; next}
{p = p "\n" $0}
END {process()}'