traverse a directory and subdirectories to find files ' properties

T

Thieum22

Hi,

I try to go through a directory and it's subdirectories to reah the
properties of each files. But I have a problem to set active the
directory where the files are, in order to display their properties.

If anyone know how to improve my method, or know a better one, he's
welcome :)

Thanks,

Matthieu

here is the code :

#! /usr/bin/perl

use File::Find;

$dir_tree = '/tmp'; #test directory
# A good way to go through the subdirectories
finddepth(\&ren_dir, $dir_tree);

sub ren_dir {
next unless (-d);
print "where are we : ";
print($_ );
print "\n";

# We set the homedir
opendir(HOMEDIR, $_) || die("unable to open directory");
# chdir ($_); # make the program active only in the first
directory parsed -> why not the other ones ?
print "* we are in a directory";
print "\n";
while($filename = readdir(HOMEDIR))
{
if ($filename ne "." && $filename ne "..")
{
#we are testingif it is a file
if (-f $filename) {
print "* we've find a file";
print "\n";

print($filename);
print "\n";
# file properties
$mtime = 0;
$size = 0;
($dev, $ino, $mode, $nlink, $uid,
$gid, $rdev, $size, $atime, $mtime, $ctime, $blksize, $blocks) = stat
$filename;
print " for example : last time
modified : ";
print($mtime);
print "\n";

}

}
}
closedir(HOMEDIR);
}
 
J

Joe Smith

Thieum22 said:
Hi,

I try to go through a directory and it's subdirectories to reah the
properties of each files. But I have a problem to set active the
directory where the files are, in order to display their properties.

If anyone know how to improve my method, or know a better one, he's
welcome :)

Don't use opendir() and readdir(); let find() do that for you.

linux% find2perl /tmp -ls >find_example.pl
linux% perl find_example.pl
linux% cat find_example.pl

Note where it is using $File::Find::name, which is the combination
of $File::Find::dir and $_.
-Joe
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,982
Messages
2,570,190
Members
46,736
Latest member
zacharyharris

Latest Threads

Top