cross-posted from: https://discuss.tchncs.de/post/13814482

I just noticed that eza can now display total disk space used by directories!

I think this is pretty cool. I wanted it for a long time.

There are other ways to get the information of course. But having it integrated with all the other options for listing directories is fab. eza has features like --git-awareness, --tree display, clickable --hyperlink, filetype --icons and other display, permissions, dates, ownerships, and other stuff. being able to mash everything together in any arbitrary way which is useful is handy. And of course you can --sort=size

docs:

  --total-size               show the size of a directory as the size of all
                             files and directories inside (unix only)

It also (optionally) color codes the information. Values measures in kb, mb, and gb are clear. Here is a screenshot to show that:

eza --long -h --total-size --sort=oldest --no-permissions --no-user

Of course it take a little while to load large directories so you will not want to use by default.

Looks like it was first implemented Oct 2023 with some fixes since then. (Changelog). PR #533 - feat: added recursive directory parser with `–total-size` flag by Xemptuous

  • linuxPIPEpower@discuss.tchncs.deOP
    link
    fedilink
    arrow-up
    0
    ·
    7 months ago

    For my part I think all this troublefinding and troublesolving is a great use of a thread. :D Especially if it gets turned into a bug report and eventually PR. I had a quick look in the repo and I don’t see anything relevant but it could be hidden where I can’t see it. Since you’ve already gone and found the problem it would be a shame to leave it here where it’ll never be found or seen. Hope you will send to them.

    I also reproduce the bug by moving an ISO file into a directory then hardlinking it in the same dir. Each file is counted individually and the dir is 2x the size it should be! I can’t find any way to fix it.

    The best I can come up with is to show the links but it only works when you look at the linked file itself:

    $ eza --long -h --total-size --sort=oldest --no-permissions --no-user --no-time --tree --links LinuxISOs
    Links Size Name
        1 3.1G LinuxISOs
        2 1.5G ├── linux.iso
        2 1.5G └── morelinux.iso
    

    If you look further up the filetree you could never guess. (I will say again that my distro is not up to date with the latest release and it is possible this is already fixed.)

    This should be an option. In dua-cli, another one of the other rust terminal tools I love, you can choose:

    $ dua  LinuxISOs
          0   B morelinux.iso
       1.43 GiB linux.iso
       1.43 GiB total
    
    $ dua --count-hard-links LinuxISOs
       1.43 GiB linux.iso
       1.43 GiB morelinux.iso
       2.86 GiB total
    
      • linuxPIPEpower@discuss.tchncs.deOP
        link
        fedilink
        arrow-up
        0
        ·
        7 months ago

        Nice! I’m sure they will appreciate your thorough report.

        I wonder if they also plan to make an option about crossing filesystem boundaries. I have seen it commonly in this sort of use case.

        Maybe all this complexity this is the reason why total dir size has not previously been integrated into this kind of tool. (Notable exception: lsd if you are interested.) I really hope the development persists though because being able to easily manipulate so many different kinds of information about the filesystem without spending hours/days/weeks/years creating bespoke shell scripts is super handy.