Você pode usar os resultados de seus comandos canalizados com um loop while:
du -hs */ | sort -rh | head -3 | while read -r size dir
do
ls -l "$dir"
done
Como um forro:
du -hs */ | sort -rh | head -3 | while read -r size dir ; do ls -l "$dir"; done
Obrigado ao steeldriver por sugerir o uso de read em um loop while sobre um loop for usando awk , para manipular nomes de arquivos com espaços e caracteres especiais de maneira mais robusta.