X-Git-Url: https://feistymeow.org/gitweb/?a=blobdiff_plain;f=scripts%2Ffiles%2Fsumming_dir.pl;h=5cd9fa6b9b1f27b80b6401d02f38382f3fd30995;hb=097059996eb488310d595e5cf5695bf4ee53a25d;hp=769a8f50c78421a72faf76df378668687e86971a;hpb=f3ac07cc36393447348472b29d7b1d7585b8116b;p=feisty_meow.git diff --git a/scripts/files/summing_dir.pl b/scripts/files/summing_dir.pl index 769a8f50..5cd9fa6b 100644 --- a/scripts/files/summing_dir.pl +++ b/scripts/files/summing_dir.pl @@ -20,7 +20,7 @@ require "filename_helper.pl"; -use Env qw(TMP); +use Env qw($TMP $color_add $ls_dot_add $TERM); local($chewed_line) = ""; local(@arg_list); @@ -37,7 +37,12 @@ if ($#ARGV < 0) { @arg_list = &glob_list(@ARGV); } +# add parameters to our chewed_line, but skip items if they are flags we don't +# implement. foreach $dir (@arg_list) { +#hmmm: fix this by using a pattern, to exclude cmd line parms, but recognize some of them, like recursive? hmmm. + if ($dir eq "-al") { next; } # skip ls directives. + if ($dir eq "-l") { next; } # skip ls directives. $chewed_line = $chewed_line . " \"$dir\""; } @@ -49,38 +54,62 @@ if ("$chewed_line" eq "") { # show the header, now that we know there's something to print. print "[" . $print_list . "]\n\n"; -##print "chewed_line is: $chewed_line\n"; - local($temp_file)=`mktemp "$TMP/zz_frdsumdir.XXXXXX"`; chop($temp_file); -system("ls -hlF $chewed_line >$temp_file"); - -##print "file is: $temp_file\n"; - -# drop the main payload, the list of directory info. -system("cat $temp_file"); +# drop the main payload, the list of directory info, but also save that +# info to a file for analysis. +system("ls -HhlF $ls_dot_add $color_add $chewed_line"); +system("ls -HhlF $ls_dot_add $color_add $chewed_line > $temp_file"); + # the color_add variable, if defined, will have flags for setting the + # directory listing color scheme. local($lengths) = 0; # open the file and process the lines to get file lengths. open(DIRLIST, "<$temp_file"); +# we only want to match ls -al style output lines, and only want to keep the size. +$pattern="^[^ ]+ +[^ ]+ +[^ ]+ +[^ ]+ +([0-9.]+[KMG]?).*\$"; foreach $file_line () { - (local $munged = $file_line) =~ s/^[^ ]* *[^ ]* *[^ ]* *[^ ]* *([0-9]+).*$/\1/; -# print "munge=$munged\n"; - $lengths += $munged; + if ($file_line =~ /$pattern/) { + (local $munged = $file_line) =~ s/$pattern/\1/; + if ($munged =~ /K$/) { + chop $munged; + $munged *= 1024.0; + #print "K munged is now $munged\n"; + } + if ($munged =~ /M$/) { + chop $munged; + $munged *= 1024.0 * 1024.0; + #print "M munged is now $munged\n"; + } + if ($munged =~ /G$/) { + chop $munged; + $munged *= 1024.0 * 1024.0 * 1024.0; + #print "G munged is now $munged\n"; + } + $lengths += $munged; + } } close(DIRLIST); unlink($temp_file); # clean up. -#print "lens are: $lengths\n"; - -local($total)=$lengths; +local($total)=int($lengths); local($kbytes)=int($total / 102.4) / 10; local($mbytes)=int($kbytes / 102.4) / 10; +local($gbytes)=int($mbytes / 102.4) / 10; print "\n"; -print "These files occupy $total bytes ($kbytes KB / $mbytes MB).\n"; +# print a fancy listing showing bytes at least, but only showing mb and gb if appropriate. +print "These files occupy $total bytes ($kbytes KB"; +if ($mbytes ne 0) { + print " / $mbytes MB"; +} +if ($gbytes ne 0) { + print " / $gbytes GB"; +} +print ").\n"; + print "Overall Drive Usage (megs):\n"; system("df -m $chewed_line >$temp_file");