Am Donnerstag 29 November 2007 schrieb Marc Deichmann: > find /PATH -type f -mtime +30 -exec rm -f {} \; Die Manpage zu find gibt zu diesem Anwendungszweck das folgende Beispiel: find /tmp -name core -type f -print0 | xargs -0 /bin/rm -f Find files named core in or below the directory /tmp and delete them, processing filenames in such a way that file or directory names containing single or double quotes, spaces or newlines are correctly handled. The -name test comes before the -type test in order to avoid having to call stat(2) on every file. Ich erinnere mich sogar dunkel daran, in der find-Manpage mal eine Warnung gelesen zu haben, dass man -exec so ohne weiteres nicht mit rm verwenden sollte. Den genauen Grund weiß ich allerdings nicht mehr. Es gibt allerdings auch schon mindestens eine Diskussion dazu, ah, okay, das ist die Sache, dass rm für jede Datei aufgerufen wird, wie auch eine zweite Fundstelle zeigt[1][2]. Ich hatte auch dunkel im Kopf, dass es Probleme geben könnte, wenn Einträge eines Verzeichnisses gelöscht werden, während find es durchsucht, aber dazu finde ich jetzt nichts. Zudem wäre es mit einem gepipten xargs ja auch nicht wirklich anders. Was jemand dazu was? Zu dem von Heiko empfohlenen -delete steht in der Manpage: -delete Delete files; true if removal succeeded. If the removal failed, an error message is issued. Use of this action automatically turns on the '-depth' option. Und die -depth Option macht Folgendes: -depth Process each directory's contents before the directory itself. Ah und ich glaube zu verstehen, wozu das gut ist: Wenn find einen rm erst auf der Verzeichnis löslässt, das noch Dateien enthält, die weitere rm-Aufrufe jedoch löschen würden, wird das Verzeichnis nicht gelöscht, es sei denn man ruft rm -r auf, das jedoch dann alle Dateien im Verzeichnis wegräumen würde, auch die, die find evtl. nicht findet. Die Lösung mit -delete gefällt mir daher doch am besten. Oder eben xargs bzw. -exec rm + mit der Option -depth. [1] http://groups.google.com/group/de.comp.os.unix.shell/browse_thread/thread/60a7af964022cf42 [2] http://www.pro-linux.de/t_shell/xargs.html -- Martin 'Helios' Steigerwald - http://www.Lichtvoll.de GPG: 03B0 0D6C 0040 0710 4AFA B82F 991B EAAC A599 84C7
Attachment:
signature.asc
Description: This is a digitally signed message part.