Zum merken:
# Hinter der geschweiften Klammer muß ein Leerzeichen stehen
find /tmp -ctime +1 -exec rm -rf {} \;
Dieses Beispiel löscht alle Dateien aus /tmp, die älter als ein Tag sind. (Genauer, die vor mehr als einem Tag verändert wurden) Ich habe mal wieder (wie immer eigentlich) das Leerzeichen nicht gehabt, aber dann gibt es in Bash find: missing argument to `-exec'
Anfängertipp: Vor dem ausführen Gehirn einschalten und rm -rf mal durch ls -l ersetzen, aber wem sage ich das.
[Update:] Gnu find beherrscht auch -delete. Also öfter mal die Man Pages ansehen, lohnt sich eben doch ! (Vielen Dank an den Kommentator)
Moin,
kleine Korrektur: -ctime ist die Create-Time, -mtime die Modification-Time und -atime die Access-Time. Zudem sollte man statt -exec lieber xargs nutzen und um Fehler durch Sonder- und Leerzeichen zu vermeiden, fehlt dann noch ein -print0. Damit sieht der Oneliner dann so aus:
Gruss, Joe User
Sorry, Fipptehler: Es muss
heissen.
Danke, das mit dem Leerzeichen passiert mir auch immer. Ich kopier dann den Aufruf von irgendwo her und merke dann nichtmal, woran es nun gelegen hat. Hoffentlich vergess ichs diesmal nicht mehr
Ich hatte auch erst -mtime, dann aber aus den Manpages bei -ctime change und nicht create herausgelesen. (Obwohl das ja klar ist, man wird alt Aber egal in meinem Fall reicht es. Will ja nur sicherstellen, das ich nicht gerade benutzte weg knalle. Und ja xargs ist besser, aber irgendwie arbeite ich meist ohne, es sei den die Parameterliste übersteigt eine magische Grenze. Die liegt jenseits der 100.
find kennt seit einiger Zeit -delete
Ach du Scheisse! Mann ist das peinlich. Tja habe ich schon mal gesehen, aber einfach nicht verinnerlicht!
Danke
Hi,
es gibt ab GNU find Version 4.2 auch folgendes:
find /tmp -mtime +1 -exec rm {} +
Das + ist quasi so als wenn man xargs nutzt.