diff --git a/bin/ls/print.c b/bin/ls/print.c --- a/bin/ls/print.c +++ b/bin/ls/print.c @@ -216,7 +216,16 @@ if ((dp->list == NULL || dp->list->fts_level != FTS_ROOTLEVEL) && (f_longform || f_size)) { - (void)printf("total %lu\n", howmany(dp->btotal, blocksize)); + u_long blocks = howmany(dp->btotal, blocksize); + + if (!f_humanval) + (void)printf("total %lu\n", blocks); + else { + (void)humanize_number(buf, 7 /* "1024 KB" */, + dp->btotal * 512, "B", HN_AUTOSCALE, HN_DECIMAL); + + (void)printf("total %s in %lu blocks\n", buf, blocks); + } } for (p = dp->list; p; p = p->fts_link) {