I want to get a daily list of all the directories under a kind of large (by home standards) news heirarchy.
I know a little about using File::Find but wonder if there is a better way. Here are the things one runs into with File::Find. if you run it looking for type d (-d) directories it still takes a really long time, and then returns all the stub names that don't actually end in files too. like comp/os or the like. I can think of a few ways to get down to the uniq directories that actually have files at there end like: comp/os/linux/misc But not without actually finding the numbered files in there. For example, If I set File::Find looking for /^\d+$/ then in my case that will have to be a full path to postings. The trouble there is that there are literally millions of numbered files under those paths. I was trying to think of something crazy like putting File::Find in a while loop that lasts out soon as a numbered file is found. Then some way to force a chngdir but not to that same path. Can someone help me with this... but understand this is not really urgent since I do know how to get it done the long way. Though I'm sure this a pretty sorry way of doing it. I used Cwd because I couldn't quite figure out how to use File::Find's nochgdir operator. Also probably a pretty holey way of getting those duplicate paths down to one by cramming them into a hash as keys and letting them cancel. #! /usr/bin/perl -w use File::Find; use Cwd; if(!$ARGV[0] || $ARGV[0] eq "help"){ usage(); exit; }else{ @top_dir = @ARGV; @ARGV = (); } $file = "./uniq_dir_under_news"; my ($our_dir, $absolute, $uniq_dirs, %uniq_dirs); find(\&wanted, @top_dir); open(FILE,">$file") or die "Can't open $file: $!"; sub wanted { $our_dir = getcwd; if($_ =~ /^\d+/){ ## This print is just to let me know its running print "$our_dir/$_\n"; $uniq_dirs{$our_dir} = $_; } } foreach $key (keys %uniq_dirs){ push @uniq_dirs,$key; } for(sort @uniq_dirs){ print FILE "$_\n"; print "$_\n"; } close(FILE); As you may guess this takes quite a while with 6.3 GIGs under /news. -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] <http://learn.perl.org/> <http://learn.perl.org/first-response>