avsize.pl to HTML.

index -|- end

Generated: Tue Feb 2 17:54:22 2010 from avsize.pl 2008/07/02 2.6 KB.

#!/perl -w
# NAME: avsize.pl
# AIM: Given an input folder, give the avaerage SIZE of the files contained. Default is current folder ...
# 7/2/2008 - geoff mclane - http://geoffair.net/mperl/
use strict;
use warnings;
use File::Basename;
use File::stat;
use Cwd;
###unshift(@INC, 'C:/GTools/perl');
my @found_files = ();
my $in_folder = 'C:\HOMEPAGE\GA\travel\maroc\pics';
my ($file, $ff, $sb, $i);
my $cwdir = getcwd();
my $fndcnt = 0;
my $totsize = 0;
my $largest = 0;
my $smallest = 999999999999;
my $sz;
my $gotzero = 0;
my $avsize = 0;
my $msg = '';
my $dircount = 0;
$in_folder = $cwdir;
if (@ARGV) {
   $in_folder = pop @ARGV;
}
if ( opendir(DIR, $in_folder) ) {
   my @files = readdir(DIR);
   closedir DIR;
   prt( "Checking ".scalar @files." items in folder $in_folder ...\n" );
   foreach $file (@files) {
      if (($file eq '.')||($file eq '..')) {
         next;
      }
      $ff = $in_folder . "\\" . $file;
      if (-f $ff) {
         $sb = stat($ff);
         push(@found_files, [$ff, $sb->size, 0]);
      } else {
         # ignore directories (and others???)
         $dircount++;
      }
   }
   $fndcnt = scalar @found_files;
   prt( "Checking $fndcnt files in $in_folder ... ($dircount directories)\n" );
} else {
   prt( "Failed to open directory [$in_folder] ... check name, location ...\n" );
}
if ($fndcnt) {
   for ($i = 0; $i < $fndcnt; $i++) {
      $file = $found_files[$i][0];
      $sz = $found_files[$i][1];
      $totsize += $sz;
      if ($sz > $largest) {
         $largest = $sz;
      }
      if ($sz) {
         if ($sz < $smallest) {
            $smallest = $sz;
         }
      } else {
         $gotzero++;
      }
   }
   $avsize = int((($totsize / $fndcnt) + 0.5));
   if ($gotzero) {
      if ($fndcnt > $gotzero) {
         $fndcnt -= $gotzero;
         $avsize = int((($totsize / $fndcnt) + 0.5));
      }
      $msg = "(with $gotzero zero files)";
   }
   prt( "Largest ".get_nn($largest).", smallest ".get_nn($smallest)." bytes ... $msg\n");
   prt( "Average of $fndcnt files is ".get_nn($avsize)." ... total ".get_nn($totsize)." bytes\n" );
} else {
   prt( "WARNING: No files found ...\n" );
}
exit(0);
###########################
sub prt {
   my ($txt) = shift;
   print $txt;
}
##################################################
# My particular 'nice number'
sub get_nn { # perl nice number nicenum add commas
   my ($n) = shift;
   if (length($n) > 3) {
      my $mod = length($n) % 3;
      my $ret = (($mod > 0) ? substr( $n, 0, $mod ) : '');
      my $mx = int( length($n) / 3 );
      for (my $i = 0; $i < $mx; $i++ ) {
         if (($mod == 0) && ($i == 0)) {
            $ret .= substr( $n, ($mod+(3*$i)), 3 );
         } else {
            $ret .= ',' . substr( $n, ($mod+(3*$i)), 3 );
         }
      }
      return $ret;
   }
   return $n;
}
# eof - avsize.pl

index -|- top

checked by tidy  Valid HTML 4.01 Transitional