Delete Script

N

Nolo

Grünschnabel
Hallo,

ich möchte mir ein delete script schreiben welches alle daten, ordner und unterordner löscht die älter als 365 Tage sind.

mein script sieht derzeit so aus:
Code:
find /home -mtime +365 -exec rm {} \;
find /home -type d -exec rmdir --ignore-fail-on-non-empty {} \;
find /home-empty -exec rmdir {} +

Er löscht die Dateien und sofern es maximal einen unterordner gibt löscht er diesen auch.

Sobald es mehr als einen Unterordner gibt löscht er die ordner nicht (Dateien werden trotzdem gelöscht).

Damit es übersichtlicher wird sollen diese auch weg.

Vielleicht kann mir jemand ja einen Tip geben wie man dies realisieren kann.



Vielen Dank
Nolo
 
Wenn Du in der letzten Zeile 'rmdir -p {} +' statt 'rmdir {} +' schreibst, muesste es funktionieren.
 
Eventuell ginge das auch in einem einzigen find, etwa so:
Code:
find $startdir -depth \
        -type f -mtime +365 -exec rm -f {} \; \
        -o \
        -type d -empty -exec rmdir {} \;

Mit "-depth" stellst du sicher, dass die Verzeichnisinhalte abgearbeitet (also ggf. gelöscht) werden, bevor find über das Verzeichnis selbst herfällt; die zweite Zeile löscht alle normalen Dateien, die älter als 365 Tage sind, und im letzten Schritt werden dann (-depth, also "von unter herauf") alle leeren Directories entfernt.

Grüsse
 
Eine andere Lösung wäre "rm -r" damit löscht er alle Dateien incl Verzeichnisse auf einen schlag. Ob es klug ist, diese Funktion zu nutzen musst du auf deine Anwendung selbst entscheiden.
 
@Rain_Maker: Jetzt bin ich beleidigt und die Denkaufgabe war für mich X(

Und wenn er den Befehl als root ausführt, bekommt er auch keine "lästigen Nachfragen" :]

Und ich Zitiere mich mal selbst...:
nighT schrieb:
Ob es klug ist, diese Funktion zu nutzen musst du auf deine Anwendung hin selbst entscheiden.
 

Ähnliche Themen

Löschscript mit Logging

while loop - ich blicks nicht

tar network backup problem

perl script, das Dateien aus einer Liste löscht

Script zum Bereinigen von Dateien mit Unterverzeichnissen (Schadcode löschen) eilt

Zurück
Oben