Hey Rajesh,

being a beginner in perl fooling around similar problems like you, I just
have the idea that you might solve the problem by using a hash to store the
information about the file's you have already found .

I've used
($FN,$PATH,$EXT) = fileparse ($File::Find::name,'\..*') ;
to separate the filename, path and extension of file found by file::find as
you may see.

What I didn't solve is to store these information in a hash to sort out
which file's are already found as decribed in chapter 5 of the
perl-cookbook. In chapter 9 of the cookbook they describe how to find the
youngest file of all in a given directory-structure like

use file::find;
@argv = ('.' unles @ARGV;
my ( $AGE , $name );
sub youngest {
return if defined $age && $age > ( stat($_)) [9];
$age = ( stat(-)) [9];
$name = $file::find:.name;
}
find (\&youngest, @ARGV);
print "$name ". scalar(laocaltime($age)) . "\n";

If you join these code-fragments and store filename, path, ext and age into
a hash or other structure you should
be able to solve your problem.

If you succeed could you please tell me how ?

Mit freundlichen Gruessen / Best regards

Manfred Beilfuss

Deutsche Vermögensberatung AG
IT_Systemmanagement , DBA
Münchenerstr. 1
60329 Frankfurt
Tel.: +49 (69) 2384 - 639
Fax: +49 (69) 2384 - 329
Mailto:[EMAIL PROTECTED]


                                                                                       
                                       
                    "Rajesh Dorairajan"                                                
                                       
                    <[EMAIL PROTECTED]        An:     "Perl-Beginners (E-mail)" 
<[EMAIL PROTECTED]>                    
                    eweed.com>                      Kopie:                             
                                       
                                                    Thema:  Search for a file pattern 
in a directory tree recursively         
                    24.03.2004 04:09                                                   
                                       
                                                                                       
                                       
                                                                                       
                                       




Hello All,

I went through all the documentation and previous mail posts about
File::Find and finally decided I needed some help.

I've a directory structure I need to parse. The directory contains
subdirectories with filenames such as

full094382.db
full483292.db

Now, I need to parse through each subdirectory and pick up the name of the
file that was MODIFIED MOST RECENTLY. I do have a sort of a code to start
with.

use strict;
use warnings;

$\ = "\n";

use File::Find;

my $localdir = 'C:/docs';
my @files;

find(
  sub { push ( @fullcrls, $File::Find::name ) if /^(full)\w*(\.db)$/ },
  $localdir );

foreach ( @fullcrls ) {
    print;
}

However, I am not able to figure how to filter out the repeat entries in a
sub-directory such as

C:/docs/dir1/full094382.db
C:/docs/dir1/full483292.db
C:/docs/dir2/full482952.db
C:/docs/dir2/full930284.db
.
.
.

In the above example, I need only need filename from dir1 and dir2 that was
last modified. Is there a way to do this filtration in the find( sub {} )
above?

Any help will be deeply appreciated.

Thanks,

Rajesh Dorairajan
[EMAIL PROTECTED]






--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>


Reply via email to