
Sort of handy - ingve
https://leancrew.com/all-this/2020/05/sort-of-handy/
======
zokier
Pretty great example on how the unix pipeline of strings falls apart because
the data is so constrained by formatting.

Slightly cleaner solution would be something like

    
    
        du | sort | numfmt
    

(with appropriate flags)

[https://www.gnu.org/software/coreutils/manual/html_node/numf...](https://www.gnu.org/software/coreutils/manual/html_node/numfmt-
invocation.html)

~~~
paedubucher
It's not the pipeline that falls apart, it's the formatting of data that is
applied too early in the process. Report the sizes numerically in the same
unit, sort them numerically, and then format the numbers in a human readable
fashion.

`sort -h` is only needed because `du -h` is used in the first place. I admit
that `du -h` comes in handy often, it is better not used for further
processing.

Your proposed approach is not only more Unix-like, but also does not require
bloated implementations of `du` and `sort` capable of parsing human-readable
size indications.

~~~
michaelcampbell
> I admit that `du -h` comes in handy often, it is better not used for further
> processing.

I'd posit that once you use -h or equivalent, any further processing by a NON-
HUMAN that works the way you want is a lucky side effect.

------
markrages
Thanks for posting this. My knowledge of "sort" predates this switch.

I wish there was a common command-line tool for "where did all my space go?"
It could look at file and directory sizes and modification times, and list the
most likely suspects.

~~~
LeoPanthera
I always use this construction for "where did my space go":

du -ha ~ | sort -hr | head -n 12

-a is the important bit, it recurses down through every directory.

Replace ~ with / or whatever directory you want.

~~~
Scaevolus

        -a, --all
            write counts for all files, not just directories

------
snt
I've actually found the output faster to parse if it's all in consistent units
(megabytes [-m]). Also find adding a grand total [-c] and staying on one
filesystem [-x] useful. I.e. in ~/.bashrc:

    
    
      alias dua="du -cmx --max-depth=1"
      alias duas="du -cmx --max-depth=1 | sort -g"

------
xalava
While this is interesting, it illustrates the time and tinkering necessary to
combine different tools and documentations to achieve something simple.
Another similar example that I use regularly on constrained machines to list
installed packages :

    
    
       dpkg-query -W --showformat='${Installed-Size} ${Package} ${Status}\n' | grep -v deinstall | sort -n | awk '{print $1" "$2}'
    

I wish there were a shell with visual help to build such commands. Meanwhile I
slowly add useful combinations as aliases in .*rc And probably use "Disk Usage
Analyser" (baobab) for this.

------
alanbernstein
I have essentially this command aliased as the silly sounding "dush1", i.e.
disk usage, sorted, human.

------
BruceEel
Yep, nice and handy! You can sort of get 'spoiled' learning command line tools
& their options on Linux first...

Perhaps my most infuriating run-in with UNIX ever has been having to use AIX
for the first time and dealing with non-GNU du, find, grep, etc.. oh my.

~~~
tecleandor
Yep. And of course... 'killall'. If you come from GNU/Linux, never use that
unless you've read the man page :D

Linux: "killall sends a signal to all processes running any of the specified
commands."

AIX: "The killall command cancels all processes that you started"

So, if you're root... good riddance to your system!

------
taneq
Nice update to ol' faithful 'du | sort -n'. Likewise I don't feel too bad for
not knowing about sort -h since it was added many years after I regularly used
Linux. :)

------
skered
There's always ncdu

~~~
LeoPanthera
And tkdu, which is abandoned, but still works great. You can pipe the output
of du into it, which is useful if you want to visualize a remote server.

[https://github.com/daniel-beck/tkdu](https://github.com/daniel-beck/tkdu)

------
juped
To be honest, I would have just patched sorting into du before looking for a
way to do it with pipes. Maybe not GNU du (GNU code and I don't get along
well).

------
gumby
My hardcore Unix friends have been complaining since forever that the gnu
commands are too fat with too many options but this is precisely why I use
them.

------
sneak
Mac GUI alternative (I use both this and du in different circumstances):

[http://www.derlien.com/](http://www.derlien.com/)

~~~
forgotmypw17
For Windows:

[https://windirstat.net/](https://windirstat.net/)

------
forgotmypw17
I'll just leave this here:

[https://www.google.com/search?q=ncdu](https://www.google.com/search?q=ncdu)

~~~
michaelcampbell
Yeah, don't. Please leave links to actual things.

