Schrift
[thread]6589[/thread]

Verzeichnisgröße ermitteln: Gibt es etwas vergleichbares zu -f ? (Seite 2)

Leser: 2


<< |< 1 2 3 >| >> 27 Einträge, 3 Seiten
cbxk1xg
 2004-12-21 09:51
#50234 #50234
User since
2003-10-20
496 Artikel
BenutzerIn
[default_avatar]
Ok, das ist ein Argument. Aber nun ist es ja anderweitig gelöst. Ich packe mir solche Subs ohnehin immer in eine extra Datei und binde diese mit use bzw. require ein. Von daher erweitert das nur meine kleine Bibliothek.

Das mit dem Providerwechsel ist ein schwieriges Thema. Ich rede schon seit Jahren auf ihn ein. Bisher ohne Erfolg.
esskar
 2004-12-21 10:21
#50235 #50235
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
ich hätte es so gemacht

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
42
43
44
45
46
sub NoSlashAtEnd
{
  my $buffer = shift;
  $buffer =~ s!/$!!;
  return $buffer;      
}

sub GetFolderInfo
{
  my ($folder, $rekursivlevel) = @_;

  $rekursivlevel = -1 unless defined $rekursivlevel;

  return (0, 0, 0) unless -d $folder;

  $folder = &NoSlashAtEnd($folder);

  my ($size, $numfiles, $numdir) = (0, 0, 0);

  my $dir;
  if(opendir($dir, $folder))
  {
     while(my $entry = defined readdir($dir))
     {
        next if $entry .= m!^\.\.?$!;
        my $path = "$folder/$path";
       
        if(-f $path)
        {
           $size += -s $path;
           $numfiles++;
        }
        elsif(-d $path and $rekursivlevel != 0)
        {
           my ($reksize, $reknumfiles, $reknumdir) = &GetFolderInfo($path, $rekursivlevel-1);
           
           $size += $reksize;
           $numfiles += $reknumfiles;
           $numdir += $reknumdir + 1;
        }        
     }
     closedir $dir;
  }  
 
  return ($size, $numfiles, $numdir);
}
\n\n

<!--EDIT|esskar|1103619762-->
Crian
 2004-12-21 10:50
#50236 #50236
User since
2003-08-04
5866 Artikel
ModeratorIn
[Homepage]
user image
Auf jeden Fall sollte man beim wechsel in Unterverzeichnisse abfragen, ob es echte Verzeichnisse oder Links sind. Links darf man dabei nicht folgen, sonst kann man sich zyklische Strukturen oder phantastische Verzeichnisgrößen einhandeln.
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
ptk
 2004-12-21 22:48
#50237 #50237
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
[quote=cbxk1xg,21.12.2004, 08:29]
Quote
Aber aber warum nimmst du nicht File::Find (das ist doch ueberall vertreten)?

Darauf würde ich mich nicht verlassen. Einer meiner Freunde hat ein Webhostingpaket bei Hosteurope und da is nix mit File::Find. Die haben so gut wie nix an Perlmodulen auf ihren Kisten. Und ich vermute mal stark, dass dies nicht die einzige Ausnahme ist.[/quote]
File::Find ist nicht dabei? Was fuer eine verkrueppelte oder alte Perl-Version (4.036?) ist denn das?
Strat
 2004-12-22 00:25
#50238 #50238
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
[quote=ptk,21.12.2004, 21:48]File::Find ist nicht dabei? Was fuer eine verkrueppelte oder alte Perl-Version (4.036?) ist denn das?[/quote]
Offenbar eine nicht verwendbare...

Eine sehr interessante Alternative zu File::Find kann File::Find::Rule sein...
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
pq
 2004-12-22 11:49
#50239 #50239
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
$titel =~ s/Verzeichnissgröße/Verzeichnisgröße/;
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
cbxk1xg
 2004-12-22 20:05
#50240 #50240
User since
2003-10-20
496 Artikel
BenutzerIn
[default_avatar]
[quote=Crian,21.12.2004, 09:50]Auf jeden Fall sollte man beim wechsel in Unterverzeichnisse abfragen, ob es echte Verzeichnisse oder Links sind. Links darf man dabei nicht folgen, sonst kann man sich zyklische Strukturen oder phantastische Verzeichnisgrößen einhandeln.[/quote]
Aber das mache ich doch mit -d?

@ esskar: Ich verstehe jetzt nicht so ganz was an deiner Variante besser ist? Ist das schneller oder genauer?
BungeeBug
 2004-12-22 20:36
#50241 #50241
User since
2004-03-16
54 Artikel
BenutzerIn
[default_avatar]
Hi,

ich weiß nich, ob ich mich jetzt gründlich disqualiviziere ... aber wie wärs mit
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
#!/usr/bin/perl

use warnings;

$size = 0;
$temp = "";
$path_to_dir="/home/www";

$size,$temp = split(, `du -ks $path_to_dir`);
print $size;


Läuft auf jedem ordentlichen OS ... ( Auf Windows nur, wenn man die "Linux" CoreUtils installiert hat [ Was man haben sollte :) ]) und ist eine sehr performante Lösung ...\n\n

<!--EDIT|BungeeBug|1103740733-->
MfG
BungeeBug
esskar
 2004-12-22 20:36
#50242 #50242
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
wollte dir nur ne alternative bieten
ptk
 2004-12-23 11:37
#50243 #50243
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
[quote=cbxk1xg,22.12.2004, 19:05][quote=Crian,21.12.2004, 09:50]Auf jeden Fall sollte man beim wechsel in Unterverzeichnisse abfragen, ob es echte Verzeichnisse oder Links sind. Links darf man dabei nicht folgen, sonst kann man sich zyklische Strukturen oder phantastische Verzeichnisgrößen einhandeln.[/quote]
Aber das mache ich doch mit -d?[/quote]
-d ist wahr, wenn es sich um einen symbolischen Link auf ein Verzeichnis handelt.
<< |< 1 2 3 >| >> 27 Einträge, 3 Seiten



View all threads created 2004-12-21 00:05.