В исходном коде coreutils я обнаружил, что total всегда будет отображаться при использовании опции -l в каталогах.
Используя параметр -d для отображения записей вместо содержимого каталога скрывается total. Но если вы запустите это без аргументов (или в каталоге), он просто покажет каталог, а не его содержимое. Поэтому вам нужны подстановочные знаки. * соответствует всем файлам, а .* соответствует также скрытым файлам (что соответствует опции -a):
ls -ld * .*
Что касается опции -h, она работает для меня. 1118360 байт отображается как 1.1M. Файлы размером меньше 1024 отображаются в байтах.