in reply to recursive directory question
First, thanks for all the suggestions and comments. Particularly merlyn for his File::Find solution and jarich for his excellent explanation of my code and it's errors
This is now the most up to date version of the problem:
#!/usr/bin/perl -w # Author: Ryan Scadlock with significant help # from Perlmonks merlyn, jarich, and Fletch # Date: 6 July 2002 # Description: (UNIX only) Recurses through a directory structure and # checks if more than half of the file in that directory have been use +d # in the past 180 days. The path of diectory which are predominately # unused is apprended to a list. use File::Find; # file's date of last access is determining factor my %access; #$access{$dirname}{old}, $access{$dirname}{new} my $top = shift || "."; find sub { return unless -f; $access{$File::Find::dir}{-A _ > 180 ? 'old' : 'new'}++; #date }, $top; # put your topdirs here for (sort keys %access) { if ($access{$_}{old} > $access{$_}{new}) { print "$_ has more old than new\n"; } }
A few problems remain. 1)This script needs to output to a file. The tree it will be searching contains thousands of directories; which would make that "print" scroll off the top. 2)There is a problem with the line
($ages{$_}{old} > $ages{$_}{new}) {
I get "use of unintialized value in numeric gt at ..." message from the interperter.
However, I am many hours closer to a working script than I was. So: Thanks
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Re: recursive directory question
by jarich (Curate) on Jul 09, 2002 at 01:02 UTC | |
by merlyn (Sage) on Jul 09, 2002 at 01:07 UTC |