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,18 @@ 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 { + char totbuf[] = "total 1024 MB"; + + humanize_number(totbuf + 6, 7, dp->btotal * 512, "", + HN_AUTOSCALE, HN_B | HN_DECIMAL); + + (void)printf("%s in %lu blocks\n", totbuf, blocks); + } } for (p = dp->list; p; p = p->fts_link) {