#!/usr/bin/perl use strict; use warnings; use File::Find; my $fileN = 0; # Counter for number of files my $fileSize = 0; # Total size of files my $backupN = 0; # Counter for number of backup files my $backupSize = 0; # Total size of backup files my $txtN = 0; # Counter for number of text files my $txtSize = 0; # Total size of text files my $plN = 0; # Counter for number of PERL scripts my $plSize = 0; # Total size of PERL scripts my $dirN = 0; # Counter for number of directories my $dirSize = 0; # Total size of directories ??? what ??? find (\&wanted, ('C:/temp')); #note: find takes a list of directories printStats(); sub wanted { if (-d) { $dirN++; return; } if (-f _) { $fileN++; $fileSize += -s _; if ($File::Find::name =~ m/~$/) #backup { $backupN++; $backupSize += -s _; } elsif ($File::Find::name =~ m/\.txt$/) { $txtN++; $txtSize += -s _; } elsif($File::Find::name =~ m/\.pl$/) { $plN++; $plSize += -s _; } } } ##### # p r i n t S t a t s # Print out all counters at the end of the walk ##### sub printStats { printf "%-12.12s %-15d %-20d\n", "Files", $fileN, $fileSize; printf " %-8.8s %-15d %-20d\n", "Backup", $backupN, $backupSize; printf " %-8.8s %-15d %-20d\n", "Text", $txtN, $txtSize; printf " %-8.8s %-15d %-20d\n", "PERL", $plN, $plSize; print "\n"; printf "%-12.12s %-15d\n", "Directories", $dirN; } __END__ .....prints on my machine:..... Files 2620 671260264 Backup 0 0 Text 155 15244026 PERL 974 6015816 Directories 46