Spielereien mit Ordnern

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von Refuse2Lose, 01.11.2005.

  1. #1 Refuse2Lose, 01.11.2005
    Refuse2Lose

    Refuse2Lose Grünschnabel

    Dabei seit:
    29.10.2005
    Beiträge:
    7
    Zustimmungen:
    0
    Hi,

    Nachdem die letzte Frage hier so nett und schnell beantwortet wurde wollte ich euch mit meinem neuen Problem mal von der Langeweile befreien.

    Ich versuche momentan ein Shell-Skript zu schreiben, das mir wenn ein Ordner über ein Gigabyte groß ist, diesen mit allen Unterverzeichnissen anzeigt um meinen Downloadordner besser zu verwalten und Ordner, die leer sind bzw. unter 5MB sind nicht anzeigt. Finde leider momentan nicht so recht nen guten Ansatz wie ich das gescheit aufbauen kann.

    Gruß
    Refuse2Lose
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. sono

    sono Sack Flöhe Hüter

    Dabei seit:
    31.01.2004
    Beiträge:
    1.299
    Zustimmungen:
    0
    Ort:
    http://webfrap.de
    na ja , das sollte mit einem bashscript , dem programm du und ein paar if abfragen ohne größere Probleme machbar sein.

    Musst halt die ausgabe in nen array einlesen lassen und mit awk Zeilenweise abarbeiten, oder sowas.

    man bash
    man du
    man awk

    http://www.bin-bash.de/
    http://pengupedia.de/Shellscripting
    http://www.fh-wedel.de/~si/vorlesungen/internet/Unix/ShellProg.html
    http://www.linux-ag.de/linux/LHB/node3.html

    Damit solltest du eigentlich genug infos haben um das ding selbst schreiben zu können .

    Gruß Sono
     
  4. #3 Refuse2Lose, 01.11.2005
    Refuse2Lose

    Refuse2Lose Grünschnabel

    Dabei seit:
    29.10.2005
    Beiträge:
    7
    Zustimmungen:
    0
    Danke :) Genau auf der Suche nach solchen Hilfen war ich :) Dann werde ich mich wieder dran setzen und schauen was ich da so schönes basteln kann

    BIG THX
     
  5. sono

    sono Sack Flöhe Hüter

    Dabei seit:
    31.01.2004
    Beiträge:
    1.299
    Zustimmungen:
    0
    Ort:
    http://webfrap.de
    Du könntest dir auch Perl mal anschauen.

    Zumindest wenn du vorhast öfters ein paar Scripte zu schreiben. Ich hab zwar von Perl noch nicht so viel Ahnung, aber man kann wohl wesentlich mehr damit machen als mit Bashscripten.

    Wenn du Material zu Perl brauchst sag bescheid.

    Gruß Sono
     
  6. #5 Refuse2Lose, 01.11.2005
    Refuse2Lose

    Refuse2Lose Grünschnabel

    Dabei seit:
    29.10.2005
    Beiträge:
    7
    Zustimmungen:
    0
    Naja, um Perl wollte ich mich nachdem ich mit den grundlegenden Funktionen von der Bash zurecht komme eigentlich erst anfangen :) Habe mich jetzt durch die Seiten mal ein bisschen durchgelesen, finde aber nicht so recht ne Möglichkeit nur besondere Ordner anzuzeigen... also nen Teil für "du" mit dem man z.B. nur Ordner ab ner bestimmten Größe anzeigen kann :(
     
  7. Xanti

    Xanti Mouse Organist

    Dabei seit:
    05.09.2004
    Beiträge:
    1.855
    Zustimmungen:
    0
    Auf die Schnelle:

    Code:
    find . -type d -exec du -sm {} \; | awk '{if ($1 > 5) print $2}'
    Gruss, Phorus
     
  8. #7 Wolfgang, 01.11.2005
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Hallo
    Ich will dir den Spaß nicht verderben, und keine fertige Lösung posten. ;)
    Obwohl sowas natürlich auch mit einem perl-Einzeiler gehen würde.:D
    Nagut es wär ein sehr langer.
    Aber mit Shellmitteln, solltest du dich mal mit der Möglichkeit einer pipe vertrat machen.
    Sprich die Ausgabe des einen Programmes in die Eingabe des nächsten schicken.

    Denkanstoß für dich:
    for I in $( find -type d); do du -s $I |awk '$1 > 1000000 {print $2 "ist groesser als 1000000"}'; done

    Das ist nicht die Lösung, soll dir aber bei deiner Craetivität einen Denkanstoß geben.
    Du könntest nun aus
    du -s $I mit cut die erste Spalte auslesen und einer Variablen zuweisen und diese dann auf > 5MB testen....


    Gruß Wolfgang
     
  9. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  10. #8 Refuse2Lose, 02.11.2005
    Refuse2Lose

    Refuse2Lose Grünschnabel

    Dabei seit:
    29.10.2005
    Beiträge:
    7
    Zustimmungen:
    0
    Danke für eure nette Hilfe :) Habe gerade ein bisschen mit euren Lösungsvorschlägen rumgespielt und bin dabei aber dann doch darauf gekommen, dass vl. Shell Skript doch etwas schwerer ist als ich dachte :( Habe alles mögliche versucht um das ganze zu basteln aber nichts will richtig klappen.
     
  11. #9 Wolfgang, 02.11.2005
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Hallo
    Wo ist das Problem?
    Wie sieht dein Versuch aus?

    Mal so aus der Hüfte eien verbesserungswürdigen schnellschuß mit
    perl :D :
    Code:
    perl -MFile::Find -e 'find(sub {return unless( -f $_);return if(/^(\.|\.\.)$/g); $d{$File::Find::dir}+= (-s _)/1024 },"/home/wolle");map{system("ls","-lah","$_")if $d{$_}>5000}grep{($d{$_}>10000) }keys %d'
    
    Listet alle Verzeichnisse, deren Inhalt über 10MB sind, und deren Unterordner mehr als 5MB beinhalten hier in meinem Verzeichnis /home/wolle

    Das ist aber nur ein sehr grober Schuss in's Blaue.
    Ich kenne ja nichtmal deine Kriterien, nach was du die Ausgabe festlegen willst.
    Sollen die Ordnergröße die Summe der darin liegenden Dateien darstellen?
    Oder willst du die Summe aller unterordner mit darufzählen, was sicher etwas sinnlos ist, denn der oberste Ordner beinhaltet ja dann alle Dateien und sind immer am größten.

    Naja, mach was daraus oder poste deine Versuche.

    Sowas geht natürlich auch mit der shell.
    Einfach ein paar verschachtelte Schleifen über Listen mit Abfragen der Bedingungen.

    Im Grunde mache ich genau das mit perl.

    Erst alle Ordner mit der Summe der size der enthaltenen Dateien füttern.
    Die grep Funktion filtert alle raus die größer 10MB sind, und damit füttere ich die map Funktion, die ein Listing aus dem System kitzelt. Dabei habe ich diesem Aufruf ganz perl-like noch eine Bedingung (>5MB) hinterhergeworfen 8).
    Sowas geht nur in perl, dafür liebe ich es. ;)
    Sieht cryptisch aus, ist aber recht primitiv gelöst.
    Die echten Gurus können das viel eleganter.
    Gruß Wolfgang
     
Thema:

Spielereien mit Ordnern

Die Seite wird geladen...

Spielereien mit Ordnern - Ähnliche Themen

  1. Problem mit 1er Freigabe und mehreren Ordnern

    Problem mit 1er Freigabe und mehreren Ordnern: Hallo Ich habe auf unseren home Server das Neuste Debian mit der neusten stabilen Samba Version. Ich habe eine Freigabe die die mehrere Ordner...
  2. Shell Skript zum automatischen Aufräumen von doppelten Ordnern

    Shell Skript zum automatischen Aufräumen von doppelten Ordnern: Hallo, Ich möchte mir ein Shell Script für folgenden Zweck schreiben. Meine Mutter hat auf Ihrem PC und auf verschiedenen Festplatten viele...
  3. Falsche Rechte gesetzt beim Anlegen von Ordnern via Samba-Client

    Falsche Rechte gesetzt beim Anlegen von Ordnern via Samba-Client: Hallo, ich habe eine Bitte: Kann jemand der Ahnung von der Konfiguration eines Samba-Servers hat, mal meine smb.conf kritisch duchgehen? Ich...
  4. Bestimmte Dateien aus vielen Unterordnern löschen

    Bestimmte Dateien aus vielen Unterordnern löschen: Hallo, habe mich schon an diversen Stellen schlau gemacht und es mit verschiedenen Ansätzen ausprobiert, aber so richtig will es nicht...
  5. Bash enscript mit mehreren Ordnern und Dateien

    Bash enscript mit mehreren Ordnern und Dateien: Hallo, Ich habe eine Ordner mit Unterordner in dem sich je mehrere verschiedenbenannte .java-Dateien befinden. Der Code: enscript -2rG...