fixed errors for 3.2K and 5.8G style entries in directory.
authorChris Koeritz <fred@gruntose.com>
Mon, 1 Oct 2012 23:56:48 +0000 (19:56 -0400)
committerChris Koeritz <fred@gruntose.com>
Mon, 1 Oct 2012 23:56:48 +0000 (19:56 -0400)
scripts/files/summing_dir.pl

index 769a8f50c78421a72faf76df378668687e86971a..d23c5b486a4797e0fe24201c87d0cd37582b07ad 100644 (file)
@@ -65,17 +65,36 @@ 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 (<DIRLIST>) {
-  (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/;
+    #print "munge=$munged\n";
+    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;