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
Off topic, but maybe someone will appreciate this. I wrote a function to get the size of contents of a dir a while back. It has a couple of dependencies (
gc
,gwc
at a glance), but should be fairly portable. The results are sorted from greatest to least as shown in the screenshot.function szup() { description=' #: Title: szup #: Synopsis: sort all items within a directory according to size #: Date: 2016-05-30 #: Version: 0.0.5 #: Options: -h | --help: print short usage info #: : -v | --version: print version number ' funcname=$(echo "$description" | grep '^#: Title: ' | sed 's/#: Title: //g') version=$(echo "$description" | grep '^#: Version: ' | sed 's/#: Version: //g') updated="$(echo "$description" | grep '^#: Date: ' | sed 's/#: Date: //g')" function usage() { printf "\n%s\n" "$funcname : $version : $updated" printf "%s\n" "" } function sortdir() { Chars="$(printf " %s" "inspecting " "$(pwd)" | wc -c)" divider===================== divider=$divider$divider$divider$divider format=" %-${Chars}.${Chars}s %35s\n" totalwidth="$(ls -1 | /usr/local/bin/gwc -L)" totalwidth=$(echo $totalwidth | grep -o [0-9]\\+) Chars=$(echo $Chars | grep -o [0-9]\\+) if [ "$totalwidth" -lt "$Chars" ]; then longestvar="$Chars" else longestvar="$totalwidth" fi shortervar=$(/Users/danyoung/bin/qc "$longestvar"*.8) shortervar=$(printf "%1.0f\n" "$shortervar") echo "$shortervar" printf "\n %s\n" "inspecting $(pwd)" printf " %$shortervar.${longestvar}s\n" "$divider" theOutput="$(du -hs "${theDir}"/* | gsort -hr)" Condensed="$(echo -n "$theOutput" | awk '{ print $1","$2 }')" unset arr declare -a arr arr=($(echo "$Condensed")) Count="$(echo "$(printf "%s\n" "${arr[@]}")" | wc -l)" Count=$((Count-1)) for i in $(seq 1 $Count); do read var1 var2 <<< "$(printf "%s\n" "${arr[$i]}" | sed 's/,/ /g')" printf " %5s %-16s\n" "$var1" "${var2//\/*\//./}" done echo } case "$1" in -h|--help) usage return 0 ;; *) : ;; esac if [ -z "$1" ]; then oldDir="$(pwd)" cd "${1}" local theDir="$(pwd)" sortdir cd "$oldDir" return 0 else : oldDir="$(pwd)" cd "${1}" local theDir="$(pwd)" sortdir cd "$oldDir" return 0 fi }``` Screenshot isn't working. I'll reply to this with it.
Thanks! I always appreciate another tool for this. I tried to run it but have dep issues.
What is
gwc
? I can’t find a package by that name nor is it included that I can see.Websearch finds GeoWebCache, Gnome Wave Cleaner, GtkWaveCleaner, several IT companies… nothing that looks relevant.
edit: also stumped looking for
gsort
. it seems to be associated with something called STATA which is statistical analysis software. Is that something you are involved with maybe running some special stuff on your system?PS you missed a newline at the end before closing the code block which is why the image was showing up as markdown instead of displaying properly.
Change:
}```
to:
} ```