The Windows dir directory listing command has a line at the end showing the total amount of space taken up by the files listed. For example, dir *.exe shows all the .exe files in the current directory, their sizes, and the sum total of their sizes. I'd love to have similar functionality with my dir alias in bash, but I'm not sure exactly how to go about it.
Currently, I have alias dir='ls -FaGl' in my .bash_profile, showing
drwxr-x---+ 24 mattdmo 4096 Mar 14 16:35 ./ drwxr-x--x. 256 root 12288 Apr 8 21:29 ../ -rw------- 1 mattdmo 13795 Apr 4 17:52 .bash_history -rw-r--r-- 1 mattdmo 18 May 10 2012 .bash_logout -rw-r--r-- 1 mattdmo 395 Dec 9 17:33 .bash_profile -rw-r--r-- 1 mattdmo 176 May 10 2012 .bash_profile~ -rw-r--r-- 1 mattdmo 411 Dec 9 17:33 .bashrc -rw-r--r-- 1 mattdmo 124 May 10 2012 .bashrc~ drwx------ 2 mattdmo 4096 Mar 24 20:03 bin/ drwxrwxr-x 2 mattdmo 4096 Mar 11 16:29 download/ for example. Taking the answers from this questionthis question:
dir | awk '{ total += $4 }; END { print total }' which gives me the total, but doesn't print the directory listing itself. Is there a way to alter this into a one-liner or shell script so I can pass any ls arguments I want to dir and get a full listing plus sum total? For example, I'd like to run dir -R *.jpg *.tif to get the listing and total size of those file types in all subdirectories. Ideally, it would be great if I could get the size of each subdirectory, but this isn't essential.