- Registriert
- 26.10.05
- Beiträge
- 3.120
Für einen anderen Thread habe ich ein kleines Tool geschrieben. Ich habe es jetzt etwas erweitert und lasse es hier zu "eigenen" Ehren kommen 
Ich habe den Thread "Das AT Tool" genannt, weil es hier entstanden ist und hier auch weitergeführt werden kann, wenn Bedarf besteht.
Auf Wunsch hir noch kurz auf Deutsch beschrieben, was es macht:
Mit sizelist kann man sich einen Überblick über die Größe von Vereichnissen verschaffen. Dabei kann man festlegen, bis zu welcher Tiefe man Informationen benötigt (--maxdepth) und was die Minimalgrößen sind, die man zu sehen bekommen möchte (--minsize).
Anwendungsbeispiele:

Ich habe den Thread "Das AT Tool" genannt, weil es hier entstanden ist und hier auch weitergeführt werden kann, wenn Bedarf besteht.
Code:
#!/usr/bin/perl
use strict;
use warnings;
use Getopt::Long;
use Pod::Usage;
###### POD #################################################################{{{
=head1 NAME
sizelist - list sizes of directories
=head1 SYNOPSIS
B<sizelist> [B<--maxdepth> n] [B<--minsize> n] [path...]
=head1 DESCRIPTION
B<sizelist> will traverse the path and count the sizes of all files and summing
them up. The sum will reported as the directory's size.
=head1 OPTIONS
=over 5
=item B<--maxdepth>
Depth up to which data is reported
=item B<--minsize>
Minimal size to report
=back
=head1 LEGAL
(C) 2007 by Skeeve (mailto: sizelist.question.skeeve et xoxy.net)
This script is under GPL.
Use it at your own risk
=cut
###### END: POD ############################################################}}}
##### commandline option variables #########################################{{{
my (
$verbose,
$depth,
$minsize,
);
##### end commandline option variables #####################################}}}
##### commandline options ##################################################{{{
# defaults
$minsize= 0;
&help unless GetOptions(
"verbose|v!" => \$verbose,
"help|h" => \&help,
"man" => \&man,
"maxdepth=i" => \$depth,
"minsize=i" => \$minsize,
);
sub help { exit pod2usage( verbose => 1 ); };
sub man { exit pod2usage( verbose => 2 ); };
##### end commandline options ##############################################}}}
my @path= @ARGV;
$path[0]= '.' unless scalar @path;
foreach (@path) {
sizeinfo($_, $depth, $minsize);
}
sub sizeinfo {
my($path, $maxdepth, $minsize)= @_;
my $this_dir;
if (not opendir $this_dir,$path) {
warn "?\t$path\t$!\n";
return 0;
}
my $sum= 0;
foreach (readdir $this_dir) {
lstat "$path/$_";
if ( -f _ ) {
$sum+= -s _ ;
}
elsif ( -d _ ) {
next if /^\.\.?$/;
$sum+= sizeinfo("$path/$_", (defined($maxdepth) ? $maxdepth - 1 : undef), $minsize);
}
}
closedir $this_dir;
print "$sum\t$path\n" if $sum >= $minsize and (not defined($maxdepth) or $maxdepth>0);
return $sum;
}
Auf Wunsch hir noch kurz auf Deutsch beschrieben, was es macht:
Mit sizelist kann man sich einen Überblick über die Größe von Vereichnissen verschaffen. Dabei kann man festlegen, bis zu welcher Tiefe man Informationen benötigt (--maxdepth) und was die Minimalgrößen sind, die man zu sehen bekommen möchte (--minsize).
Anwendungsbeispiele:
- Wie groß sind die Anwendungen?
sizelist --maxdepth 2 /Applications - Und das dann noch sortiert nach größe (dazu nimmt man sort)
sizelist --maxdepth 2 /Applications | sort -n - Wie groß sind alle meine Verzeichnisse, die größer sind als 512.000.000 Byte?
sizelist --minsize ~
Zuletzt bearbeitet: