Hacker News new | past | comments | ask | show | jobs | submit login
Sort of handy (leancrew.com)
70 points by ingve on May 21, 2020 | hide | past | favorite | 27 comments



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...


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.


> 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.


Nice but somehow I feel that PowerShell users aren't impressed..


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.


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.


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


I like ncdu.


I prefer https://github.com/bootandy/dust , more lightweight


I prefer http://fsv.sourceforge.net/, more heavyweight.


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"


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.


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


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.


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!


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. :)


There's always ncdu


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


And the great thing about ncdu is that you won't have to traverse the filesystem again and again as you narrow down where the disk is going, if you don't already have a good guess.



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).


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.


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

http://www.derlien.com/



MacOS GUI - I used to use DiskInventoryX, then found GrandPerspective which has met my modest needs for years.


I'll just leave this here:

https://www.google.com/search?q=ncdu


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




Consider applying for YC's Fall 2025 batch! Applications are open till Aug 4

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: