1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

sizelist - das AT Tool ;-)

Dieses Thema im Forum "Unix & Terminal" wurde erstellt von Skeeve, 22.11.07.

  1. Skeeve

    Skeeve Pomme d'or

    Dabei seit:
    26.10.05
    Beiträge:
    3.121
    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.

    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 ~
     
    #1 Skeeve, 22.11.07
    Zuletzt bearbeitet: 22.11.07
  2. jensche

    jensche ̈Öhringer Blutstreifling

    Dabei seit:
    27.10.04
    Beiträge:
    5.570
  3. ZENcom

    ZENcom Goldener Apfel der Eris

    Dabei seit:
    30.03.06
    Beiträge:
    2.650
    Könnte man in Erfahrung bringen welche Aufgabe das Tool erfüllt? "sizelist" ist ja etwas pauschal ausgedrückt…

    ;)

    ps.: Ahja, What Size ist der GUI-Brother. :)
     
  4. unknown7

    unknown7 Saurer Kupferschmied

    Dabei seit:
    28.01.07
    Beiträge:
    1.699
    dito ;) Und das ganze bitte noch auf Deutsch :-D
    dankeschön!

    edit: achso, jetzt hab ichs auch kapiert, ich hätte mal auf den Link klicken sollem Oo
     
  5. CRiMe

    CRiMe Englischer Kantapfel

    Dabei seit:
    07.12.06
    Beiträge:
    1.075
    Vielen Dank Skeeve.
    Sehr interessant und gut, um sich in die Materie einzuarbeiten. Wird sofort heute abend durchgekaut.

    Gruss
    Andreas
     
  6. Skeeve

    Skeeve Pomme d'or

    Dabei seit:
    26.10.05
    Beiträge:
    3.121
    Naja... Eindeutschen werde ich diese minimal-manpage sicherlich nicht. Im Terminal ist eh nix auf Deutsch.

    @jensche: Sicherlich ist Mac Ottonormaluser kein Terminalfan. Aber für den ist es auch weniger gedacht. Es gibt ja haufenweise Tools, die Dir die Größen anzeigen. Soger schön bunt als Bildchen. Aber wie Du im anderen Thread vielleicht gesehen hast, haben die dort nicht so richtig weitergeholfen. Da ging es dann auch ganz rasch ins Terminal.

    Zudem ist ein Zweck auch (siehe CRime und space im anderen Thread) ein bißchen was über Scripterstellung zu lernen. Also: Falls Fragen zur Arbeitsweise des Scripts aufkommen: Einfach hier posten.
     
  7. jensche

    jensche ̈Öhringer Blutstreifling

    Dabei seit:
    27.10.04
    Beiträge:
    5.570
    das ist ja auch gut so. ich habe auch übersehen das das ja im Terminal Bereich ist... ;)

    Aber ich finde es gut. somit kann man langsam begreifen wie Unix funktioniert. und was es macht.
     
  8. tfc

    tfc Ontario

    Dabei seit:
    21.07.07
    Beiträge:
    348
    Es mag ja Spaß machen, mal wieder nen Script zu schreiben, aber wozu das hier?

    Mit DU kann man einiges.
    Code:
    du -sh /Applications
    Oder eine sortierte Liste in MegaByte:
    Code:
    du -sm /Applications/* | sort -n
     
  9. KayHH

    KayHH Gast

    Das zeigt der Finder ja schon an.


    KayHH
     
  10. tfc

    tfc Ontario

    Dabei seit:
    21.07.07
    Beiträge:
    348
    Und was zeigt der Finder an dem Script des Threadstarters nicht an?
     
  11. KayHH

    KayHH Gast

    Der Finder bietet die Optionen nicht. KayHH
     
  12. AgentSmith

    AgentSmith Hochzeitsapfel

    Dabei seit:
    15.07.07
    Beiträge:
    9.361
    Ich gebe zu, obwohl ich durchaus mit Terminal umzugehen weiß, liegt mir WhatSize eher.. ;)
    Aber trotzdem Danke, Skeeve!
     
  13. space

    space Neuer Berner Rosenapfel

    Dabei seit:
    02.12.05
    Beiträge:
    1.950
    Vielen Dank Skeeve! :)

    Jetzt muss ich mich da nur noch durchkauen :cool:

    Ich finde übrigens, dass es ein wirklich praktisches Tool ist. Werde ich bestimmt öfter nutzen.
    Und um noch mal auf What Size zurückzukommen. Wenn schon, dann bitte Disk Inventory X , denn What Size zeigt nicht alle Daten an.

    Abgesehen mal von dem GUI verwöhnten Auge, welches sich mit Disk Inventory X ein sehr schönes "Bild" von den Daten und ihrer Größe machen kann, habe ich hier ein Tool, welches ungleich schneller arbeitet und dabei durch die nützlichen Parameter die Suche auf das "Wesentliche" beschränken kann. Super!

    Und zu "du": Damit zeigt man doch Verzeichnisse an … o_O

    Gruss
     
  14. tfc

    tfc Ontario

    Dabei seit:
    21.07.07
    Beiträge:
    348
    Nun, "du" ist etwas allgemeiner. Manpagetitel: "du -- display disk usage statistics"

    Dateiengrößen anzeigen, Ordnergrößen aufsummieren, Tiefe bestimmen, entscheiden, ob symbolischen Links gefolgt werden soll oder nicht (Was nen kolossalen Unterschied ausmachen kann), Größen in KiloByte, MegaByte oder automatisch ausgewählt anzeigen lassen, Dateien/Ordner, die einem bestimmten Muster entsprechen, auslassen, und, und, und...

    @Space: Du meinst "ls". Damit zeigt man tatsächlich Verzeichnisse an, ja...
     
  15. Skeeve

    Skeeve Pomme d'or

    Dabei seit:
    26.10.05
    Beiträge:
    3.121
    Weil ich bei "du" dann weiß, wie groß die Verzeichnisse sind, nicht aber, wie groß die darunter sind. Mag sein, daß "du" das kann. Da ich das nicht weiß und kein Interesse hatte, das nachzusehen und außerdem weiß, wie ich das ganze in perl schreiben kann, habe ich es gemacht. Du kennst den Spruch? "Für einen Mann mit Hammer sieht alles wie ein Nagel aus." Mein Hammer ist perl...
     
  16. tfc

    tfc Ontario

    Dabei seit:
    21.07.07
    Beiträge:
    348
    Das mit dem Hammer kenn ich zu gut... ;)

    Also nichts für ungut mit dem "du". Wollte an sich nur erwähnen, dass es sowas gibt und mich gleichzeitig erkundigen ob Dein Script etwas kann, was "du" nicht kann, um dazuzulernen, falls ich hier etwas übersehen habe.
     
  17. Skeeve

    Skeeve Pomme d'or

    Dabei seit:
    26.10.05
    Beiträge:
    3.121
    Klar: Es ist erweiterbar ;) KB,MB, GB, TB einbauen -> Sollte leicht sein.
    Auf Blockgrößen aufrunden -> Sollte auch möglich sein.
    Was auch immer man integrieren mag: Mit Perl ist das alles relativ einfach.
     
  18. tfc

    tfc Ontario

    Dabei seit:
    21.07.07
    Beiträge:
    348
    Hm... Ruby rockt da mehr, finde ich. Hab beim Zivildienst mal mehrere Scripte in beiden Sprachen implementiert und die Rubyscripte waren jeweils kürzer, leichter verständlich und "direkter".
    Die Sprache steht einem einfach weniger im Weg herum als Perl.
     
  19. Skeeve

    Skeeve Pomme d'or

    Dabei seit:
    26.10.05
    Beiträge:
    3.121
    Deine Meinung ;) Wie lang ist so ein Zuvieldienst? 10? 15 Monate? Toll ;) Meine Erfahrung mit Perl reicht mehr als 12 Jahre zurück. Du kannst mir also glauben, wenn ich sage: Mir steht Perl nicht im mindesten im Weg herum.
     
  20. tfc

    tfc Ontario

    Dabei seit:
    21.07.07
    Beiträge:
    348
    So ein Zivildienst ist neun Monate lang und ich habe von dem Mist kaum die Hälfte herum.
    Aber Zivildienst != Programmiererfahrung.

    Außerdem kann man das Im-Weg-Stehen einer Sprache nicht an der Codeschreib-Leichtigkeit eines erfahrenen Programmierers messen (Stell Dir vor, man fand es mal normal, Autos mit einer Kurbel anzulassen und Leute die dran gewöhnt waren, hatten nicht das Bestreben, den E-Starter zu erfinden!), sondern viel mehr an dem Denkaufwand, den man hat, wenn sich irgendwo "tief unten" in der Programmlogik etwas ändern muss.
     

Diese Seite empfehlen