# Usage: find_archive [directory 1] [directory 2] ... [directory n] use File::Find; # file's date of last access is determining factor my %access; #$access{$dirname}{old}, $access{$dirname}{new} my @top_dirs = @ARGV; # allows us to search over multiple trees # eg /home/jarich/ /home/aquilo/ if # specified on command line push @top_dirs, "." unless @top_dirs; # default behaviour my $results_file = "./archive_results.txt"; find sub { return unless -f; $access{$File::Find::dir}{-A _ > 180 ? 'old' : 'new'}++; }, @top_dirs; my @results; for (sort keys %access) { $access{$_}{old} ||= 0; # defaults to avoid warnings $access{$_}{new} ||= 0; if ($access{$_}{old} > $access{$_}{new}) { push @results, "$_"; # keep results rather than printing } } # Dump all to file. open RESULTS, "> $results_file" or die "Failed to open $results_file for writing: $!\n"; print RESULTS join("\n", @results), "\n"; close RESULTS;