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

  • some_guy@lemmy.sdf.org
    link
    fedilink
    arrow-up
    0
    ·
    edit-2
    3 months ago

    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.
    • linuxPIPEpower@discuss.tchncs.deOP
      link
      fedilink
      arrow-up
      0
      ·
      edit-2
      3 months ago

      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:

          }
          ```