shell script Verzeichnis suchen und löschen

Hinweis: In dem Thema shell script Verzeichnis suchen und löschen gibt es 9 Antworten. Der letzte Beitrag () befindet sich ganz unten auf dieser Seite.
  • Hallo,


    ich suche eine shell - Lösung (script) für:


    auslesen ein bestimmtes Verzeichnis mit den Funkionen:


    • Sort Untererzverzeichnisse nach Erstelldatum, absteigend,
      jüngstes Verzeichnis zuerst


    • feststellen Anzahl der Unterverzeichnisse


    • wenn Anzahl der Unterverzeichnisse > 3


    • dann lösche Unterverzeichnisse 4, und alle weitere (die
      ältesten).



    Nur die 3 jüngsten Verzeichnisse (Sicherungen) werden behalten.


    Ich kenne die verschiedene Befehle wie „find, ls,“ u. s. w.
    aber mir fehlt die Programmierpraxis, und damit auch die Umsetzung.



    Vorab vielen Dank für Tips und Hilfen
    H.Schulz

    vielen Dank,
    und ich hasse Streß,
    Horst

    Einmal editiert, zuletzt von horstschulz () aus folgendem Grund: gelöst

    Für den Inhalt des Beitrages 57810 haftet ausdrücklich der jeweilige Autor: horstschulz

  • Sieh Dir zuerst an, was alles gelöscht würde:

    Code
    cd BestimmtesVerzeichnis
    find ./ -maxdepth 1 -type d ! -name "\." -printf "%T@ %p\000" | sort -nzr | while read -d '' l; do ((i++>=3)) && printf "%s\000" "${l#* }";done | tr \\000 \\n


    ... bevor Du es scharf ausführst:

    Code
    cd BestimmtesVerzeichnis
    find ./ -maxdepth 1 -type d ! -name "\." -printf "%T@ %p\000" | sort -nzr | while read -d '' l; do ((i++>=3)) && printf "%s\000" "${l#* }";done | xargs -0 rm -vr


    Der Code sollte mit allen Dateinamen klarkommen (deswegen die Nullbytes). ;)

    Für den Inhalt des Beitrages 57812 haftet ausdrücklich der jeweilige Autor: Easy

  • hallo,
    der Code hat geklappt!
    Allerdings muß der Zähler in der do-Schleife ">2" sein, da der Zähler bei Null beginnt.


    :smilie_hops_092:

    vielen Dank,
    und ich hasse Streß,
    Horst

    Für den Inhalt des Beitrages 57961 haftet ausdrücklich der jeweilige Autor: horstschulz

  • Bitte noch den Beitrag als gelöst markieren:
    1. Beitrag bearbeiten und vor den Titel ein [Gelöst] schreiben.

    Für den Inhalt des Beitrages 57962 haftet ausdrücklich der jeweilige Autor: Sauerland


  • Allerdings muß der Zähler in der do-Schleife ">2" sein, da der Zähler bei Null beginnt.


    Kannst Du mir mal bitte den Unterschied zwischen
    größer als 2
    und
    größer oder gleich 3
    erklären?
    :wacko:

    Für den Inhalt des Beitrages 58009 haftet ausdrücklich der jeweilige Autor: Easy

  • Kannst Du mir mal bitte den Unterschied zwischen
    größer als 2
    und
    größer oder gleich 3
    erklären?


    Kannst Du mir mal bitte den Unterschied zwischen
    größer als 2
    und
    größer oder gleich 3
    erklären?


    jow, kann ich,
    der Zähler beginnt mit dem Zählen bei 0. also sind die nicht gelöschten Dateien die mit der Nummer 0, 1, 2, demnach 3 Dateien, mit den Vorgabewert 3, sind es die Dateien 0, 1, 2, 3, 4.
    OK?

    vielen Dank,
    und ich hasse Streß,
    Horst

    Für den Inhalt des Beitrages 58024 haftet ausdrücklich der jeweilige Autor: horstschulz

  • Zitat


    jow, kann ich,
    der Zähler beginnt mit dem Zählen bei 0. also sind die nicht gelöschten Dateien die mit der Nummer 0, 1, 2, demnach 3 Dateien, mit den Vorgabewert 3, sind es die Dateien 0, 1, 2, 3, 4.
    OK?


    Code
    i=0; while [ "$i" -lt 8 ]; do ((i++>=3)) && echo $i; done
    4
    5
    6
    7
    8


    Code
    i=0; while [ "$i" -lt 8 ]; do ((i++>2)) && echo $i; done
    4
    5
    6
    7
    8


    OK?

    Für den Inhalt des Beitrages 58029 haftet ausdrücklich der jeweilige Autor: rme

  • Danke an rme. :thumbup:


    Sollte so deutlich sein, dass es keinen Unterschied gibt.

    Für den Inhalt des Beitrages 58034 haftet ausdrücklich der jeweilige Autor: Easy