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

Recursion example (Directory sizing on the side)

by Beatnik (Parson)
on Jan 15, 2001 at 05:06 UTC ( #51836=snippet: print w/ replies, xml ) Need Help??

Description: Some recursion example I wrote some time again, it happens to return the directory size. There is probably more than one way to do it, this is just my way :)
#!/usr/bin/perl

sub dodir {
opendir(DIR,$_[0]);
my $dir = $_[0];
if ($dir !~ /\/$/) { $dir .= "/"; }
my @List=readdir(DIR); 
closedir(DIR);
splice(@List,0,2);
foreach $file (@List) {
my $file = $dir.$file;
if (-d $file) { dodir($file); }
else { $totsize += (-s $file); }
 }
}
dodir($ARGV[0]);
print "Reading $ARGV[0]\n";
print $totsize," bytes\n",($totsize/1024)," Kilobytes\n",($totsize/(10
+24*1024))," Megabytes\n";
Comment on Recursion example (Directory sizing on the side)
Download Code
Re: Recursion example (Directory sizing on the side)
by Fastolfe (Vicar) on Jan 15, 2001 at 08:52 UTC
    This is something File::Find can do pretty easily, as well:
    use File::Find; my $total_size = 0; find(sub { $total_size += -s }, @ARGV ? @ARGV : '.'); print "Total size: $total_size\n";

Back to Snippets Section

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: snippet [id://51836]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others wandering the Monastery: (12)
As of 2014-10-21 12:44 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    For retirement, I am banking on:










    Results (103 votes), past polls