Subject: bug#17553: du unit suggestion

From: Reuben Thomas <[email-masked]>
Date: Fri, 23 May 2014 11:13:02 +0100

On 22 May 2014 23:58, Pádraig Brady <[email-masked]> wrote:

> On 05/22/2014 08:47 PM, Reuben Thomas wrote:
> > It would be helpful to this addle-pated individual if du would output the
> > same units as it accepts as SIZE inputs, so that one could more readily
> > tell whether one was getting 1000-based or 1024-based units.
> >
> > For additional clarity, it would help if for output the suffix were "B"
> as
> > at present for 1000-based units and "iB" for 1024-based (and
> > correspondingly it would be nice if "iB" suffixed units were accepted as
> > input. As far as input goes, it's backwards-compatible; it's not for
> output
> > if other programs are trying to parse the human-readable output, but
> maybe
> > that's not a problem.
>
> Yes this is not ideal, but it half does what you want:
> With this file:
>
>   $ truncate -s 1MiB file.in
>
> We can output the appropriate suffixes for a _particular_ power.
>
>   $ du --apparent-size -BKiB file.in
>   1024KiB       file.in
>   $ du --apparent-size -BKB file.in
>   1049kB        file.in
>
> However if we want to auto scale the number with -h we lose the suffix,
> and have an ambiguity:
>
>   $ du --apparent-size -h file.in
>   1.0M  file.in
>   $ du --apparent-size -h --si file.in
>   1.1M  file.in
>
> If you wanted to get auto scaling with suffixes you could use
> the new numfmt utility which has various number formatting options.
> The advantage of that is it concentrates the myriad of number formatting
> options in a single location, and allows processing of numbers before
> final presentation by numfmt. For example:
>
>   $ du -B1 . | sort -k1,1n | numfmt --to=iec-i | tail -n5
>   104Mi ./gnulib/.git/objects/pack
>   216Mi ./gnulib/.git/objects
>   218Mi ./gnulib/.git
>   274Mi ./gnulib
>   479Mi .
>

Thanks for clarifying what is possible. Currently du's behaviour is more
inconsistent than I'd realised. I see that if one wanted more complicated
units it would make sense to use an external utility, but here I'd just
like -h's output to be consistent with --apparent-size's output.

It seems that -iB suffixed units are already accepted as input, which was
my second request, but not documented in the man page. I'd like to fix
this, but without duplicating information. What's best: to add a phrase
saying that SI units are accepted and/or to make a cross-reference to the
relevant node of the info manual?

-- 
http://rrt.sc3d.org