[SCRIPT] Hilfe bei Syntax und find-Befehl

  • Hallo zusammen


    Ich hab mir vor einiger Zeit mein erstes UNIX Script zusammen geschrieben.
    Als Mädcheninformatiker schäme ich mich ein wenig über das fehlende Wissen, aber es wurde schlicht nicht gelehrt und bislang nicht benötigt.
    How ever...


    Jetzt steh ich vor ein paar Fragen: Ich hab mir dieses Script zusammengebastelt und dafür ein cronjob eingetragen, der es alle 24hrs ausführt.

    Code
    1. #! /bin/bashrm -r /share/MD0_DATA/24hrs/mkdir /share/MD0_DATA/24hrs/chmod 774 /share/MD0_DATA/24hrs/mkdir /share/MD0_DATA/24hrs/Janchmod 774 /share/MD0_DATA/24hrs/Janmkdir /share/MD0_DATA/24hrs/Adrianchmod 774 /share/MD0_DATA/24hrs/Adrianmkdir /share/MD0_DATA/24hrs/Lukaschmod 774 /share/MD0_DATA/24hrs/Lukas[usw.]


    Dazu habe ich ein paar Fragen:
    1.) Der Code ist ziemlich hässlich - ich lösche erst alles, dann stell' ichs wieder her. Wie kann ich das ändern?
    Ich hätt es mit einer Schleife und String zusammengebastel gemacht. In C wüsste ich wie es geht, doch hier?!?
    Wie kann ich mit rm den Inhalt eines Ordners löschen? rm -rf würde ja auch den Ordner selbst löschen...


    2.) Auch würde ich das Script gerne auf stündlich umstellen und dann alle Daten, die älter als 24Hrs (kopierdatum) sind löschen. Hier mein Ansatz:

    Code
    1. find . -mtime +$1 -type f -exec echo Searching Files complete \; -exec rm -r {} \; -exec echo Deleting Files complete \;


    Hab ich mir aus Wikipedia zusammengeklaut, komm aber mit der Syntax nicht ganz klar.


    Danke schon mal für die Hilfe!

  • Hi,


    die scripts für eine QNQP sollten mit

    Code
    1. #! /bin/sh

    beginnen, da die Shell und nicht die Bash der Standardinterpreter ist.
    Dein 2. Ansatz mit find ist sicher die bessere und elegatere Methode.
    Wenn du alle Dateien, die äter sind als 1 Tag, löschen willst:

    Code
    1. find /share/MD0_DATA/24hrs -type f -mtime +1 -exec rm {} \;


    Wenn du auch Verzeichnisse löschen willst:

    Code
    1. find /share/MD0_DATA/24hrs -mtime +1 -exec rm {} \;
  • Hallo Lutz


    Danke schon mal für die Zeile Code!
    Die Shell als Standardinterpreter hatte ich schon geändert, warum auch immer ich da noch bash stehen hatte.


    Zu deiner Zeile Code:
    Wenn ich die Verzeichnisse gelöscht habe, muss ich dennoch die User-Ordner und deren Rechte wieder herstellen, oder?

  • Hi,
    schreib doch mal detailiert was du machen möchtest!

  • Ich wollte einfach nur ein Gruppenlaufwerk, dass sich nach n Tagen löscht, bezogen auf das Kopierdatum.
    Das Problem ist nur, dass die Schnittplätze die Dateien ausführen und daher die 777 freigabe brauchen.