I had to add
$total_size_of_files_in_dir = 0;
because it was accumulating. Now it does what is should do and I get the
correct results!!!
---code---
#!/bin/perl
use warnings;
use strict;
use File::Find;
my $path = $ARGV[0];
die "You must supply a full directory path" unless (-e $path && -d $path);
opendir (DIR, $path) or die "can't opendir $path: $!";
my @directories = grep { -d "$path/$_" && ! /^\./ } readdir(DIR);
my $total_size_of_files_in_dir;
foreach my $dir (@directories) {
find(\&wanted, "$path/$dir"); ### Not sure how that worked as you
called it $directory
print "The total size of the file in $dir is " . sprintf("%.2f Kb",
($total_size_of_files_in_dir * 0.0009765625)) . "\n";
print "The total size of the file in $dir is " . sprintf("%.2f Mb",
($total_size_of_files_in_dir * 9.5367431641e-7)) . "\n";
print "The total size of the file in $dir is " . sprintf("%.2f Mb",
(&size_in_mb($total_size_of_files_in_dir))) . "\n";
$total_size_of_files_in_dir = 0;
}
sub wanted {
if (-f $_) {
$total_size_of_files_in_dir += -s;
}
}
sub size_in_mb {
my $size_in_bytes = shift;
return $size_in_bytes / (1024 * 1024);
}
---code---
2009/3/5 Dermot <[email protected]>
> 2009/3/5 Lauri Nikkinen <[email protected]>:
> > Thanks, although is does not change the differences between dir sizes
> from
> > this script and Win Explorer folder properties. This e.g. shows that one
> of
> > my folders has 88 mb size although in fact it is empty. Thank you all,
> I'll
> > give up...
> >
> > -L
> >
>
> You have to be doing something wrong. If I cut and paste the code I
> gave you above and run it, I get:
>
> C:\Documents and Settings\Dermot\Desktop>perl t5.pl c:/perl
> The total size of the file in bin is 2909.41 Kb
> The total size of the file in bin is 2.84 Mb
> The total size of the file in eg is 3519.35 Kb
> The total size of the file in eg is 3.44 Mb
> The total size of the file in html is 27928.85 Kb
> The total size of the file in html is 27.27 Mb
> The total size of the file in lib is 51368.47 Kb
> The total size of the file in lib is 50.16 Mb
> The total size of the file in site is 89741.69 Kb
> The total size of the file in site is 87.64 Mb
>
>
> And this matches what I get from properties.
> Dp.
>
>
> #!/bin/perl
>
> use warnings;
> use strict;
> use File::Find;
>
> my $path = $ARGV[0];
> die "You must supply a full directory path" unless (-e $path && -d $path);
> opendir (DIR, $path) or die "can't opendir $path: $!";
> my @directories = grep { -d "$path/$_" && ! /^\./ } readdir(DIR);
> my $total_size_of_files_in_dir;
> foreach my $dir (@directories) {
> find(\&wanted, "$path/$dir");
> print "The total size of the file in $dir is " .
> sprintf("%.2f Kb", ($total_size_of_files_in_dir *
> 0.0009765625)) ."\n";
> print "The total size of the file in $dir is " . sprintf("%.2f
> Mb", ($total_size_of_files_in_dir * 9.5367431641e-7)). "\n"
>
> }
> sub wanted {
> if (-f $_) {
> $total_size_of_files_in_dir += -s;
> }
> }
>
> --
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]
> http://learn.perl.org/
>
>
>