use File::Find; my %ages; # $ages{$dirname}{old}, $ages{$dirname}{new} find sub { return unless -f; $ages{$File::Find::dir}{-M _ > 180 ? 'old' : 'new'}++; }, "."; # put your topdirs here for (sort keys %ages) { if ($ages{$_}{old} > $ages{$_}{new}) { print "$_ has more old than new\n"; } }