Thread Verzeichnisgröße ermitteln: Gibt es etwas vergleichbares zu -f ? (26 answers)
Opened by cbxk1xg at 2004-12-21 00:05

cbxk1xg
 2004-12-21 08:42
#50229 #50229
User since
2003-10-20
496 Artikel
BenutzerIn
[default_avatar]
Also für alle die es interessiert hier meine Lösung. Wo ich schon dabei war, habe ich gleich noch eine paar kleine Details mit eingebaut. Vielleicht ist es ja was für die FAQs?

Ich rufe eine sub auf und übermittle den Pfad:
&GetFolderInfo($mypath);

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
sub GetFolderInfo
{
my @dirs = @_;
my (@allfiles, @files, @folders) = ();
my ($currdir, $file, $size, $measurement, $numfolders) = "";

while (@dirs != 0)
{
$currdir = pop( @dirs );
opendir( ENTRIES, "$currdir/" );
@allfiles = readdir( ENTRIES );
closedir( ENTRIES );

    foreach $file (@allfiles)
    {
        if (-d "$currdir/$file")
        {
        push( @folders, "$currdir/$file" ) if (($file ne ".") && ($file ne ".."));
        push( @dirs, "$currdir/$file" ) if (($file ne ".") && ($file ne ".."));
        }

        else
        {
        push( @files, "$currdir/$file" );
        my $currfile = "$currdir/$file";
        my $currsize = -s $currfile;
        $size = $size + $currsize;
        }
    }
}

my $numfiles = @files;
my $numfolders = @folders;

$size = sprintf("%.2f",$size / 1024);
$measurement = "KB";
if ($size > 1024) {$size = sprintf("%.2f",$size / 1024); $measurement = "MB";}
if ($size > 1024) {$size = sprintf("%.2f",$size / 1024); $measurement = "GB - WARNING! THE FOLDER IS WAY TO BIG!";}
$size =~ y/./,/;
return "$size $measurement<br>$numfiles files<br>in $numfolders (sub)-folder(s)";
}


Das Ergebniss sieht dann z.B. so aus:
368,30 KB
35 files
in 4 (sub)-folder(s)\n\n

<!--EDIT|cbxk1xg|1103611619-->

View full thread Verzeichnisgröße ermitteln: Gibt es etwas vergleichbares zu -f ?