Beefy Boxes and Bandwidth Generously Provided by pair Networks
more useful options

Re: List all directories

by mandog (Curate)
on Sep 25, 2003 at 19:25 UTC ( [id://294226] : note . print w/replies, xml ) Need Help??

in reply to List all directories

A lot depends on your needs. If this was a throw away script, You could do something ugly like:

system('ls -Rl ~| grep ^d');

You could look at File::Find and the -d function

If you couldn't figure out File::Find, you could do something like this:

my $DIE_MSG="FATAL ERROR"; sub get_bytes_in_file_list { my @files = @_; my $size=0; foreach my $file (@files) { die "can't read $file $DIE_MSG" if ( !-r $file ); if ( -d $file ) { opendir( DH, $file ) or die "$! bad open directory $file $DIE_MSG\n"; my @sub_files = map { "$file/$_"; } grep { $_ ne '.' && $_ ne '..'; } readdir(DH); closedir(DH) or die "$! couldn't close dir:$file\n$DIE_MSG +"; $size += get_bytes_in_file_list(@sub_files) if (@sub_files) # don't check empty dir; } else { $size += ( stat($file) )[7]; } } return $size; }

email: mandog

Replies are listed 'Best First'.
A reply falls below the community's threshold of quality. You may see it by logging in.