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
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.
I believe gwc and gsort are part of coreutils based on this:
$ gwc --help
Usage: gwc [OPTION]... [FILE]...
or: gwc [OPTION]... --files0-from=F
Print newline, word, and byte counts for each FILE, and a total line if
more than one FILE is specified. A word is a nonempty sequence of non white
space delimited by white space characters or by start or end of input.
With no FILE, or when FILE is -, read standard input.
The options below may be used to select which counts are printed, always in
the following order: newline, word, character, byte, maximum line length.
-c, --bytes print the byte counts
-m, --chars print the character counts
-l, --lines print the newline counts
--files0-from=F read input from the files specified by
NUL-terminated names in file F;
If F is - then read names from standard input
-L, --max-line-length print the maximum display width
-w, --words print the word counts
--total=WHEN when to print a line with total counts;
WHEN can be: auto, always, only, never
--help display this help and exit
--version output version information and exit
GNU coreutils online help: <https://www.gnu.org/software/coreutils/>
Full documentation <https://www.gnu.org/software/coreutils/wc>
or available locally via: info '(coreutils) wc invocation'