Veröffentlicht 20. Januar 200421 j Hi Leute! Ich habe ein Problem mit dem find Befehl. Ich möchte in Verzeichnis /home/user/dat/* Dateien, die älter sind als 3 Monate finden und löschen. In MAN habe ich nachgeguckt sowie viele Varianten ausprobiert, aber zum Ergebnis kam ich nicht. Weißt das einer von euch?? CU
20. Januar 200421 j Hallo, dafür gibt es die Option "-mtime". find . -mtime -90 -print gibt alle Dateien aus, die in den letzten 90 Tage modifiziert wurden. Ausserdem solltest Du drauf achten, welche Dateien gefunden werden. In der obrigen Version werden auch Verzeichnisse mit ausgegeben. Ein "rm" wäre also unter Umständen fatal, zumindest mit der Option "-r". find . -type f -mtime -90 -print findet nur "normale" Dateien. Aktionen auf den gefundenen Dateien kannst Du mit der Option "-exec" ausführen. find . -type f -mtime -90 -exec ls -l {} \; Führt ein "ls -l" auf jede gefundene Datei aus. [Achtung: Ich habe das nicht an der Konsole überprüft, gerade mit einem "-exec rm" sollte man sehr vorsichtig sein, da man insbesondere in der Testphase viel Unheil anrichten kann] Nic
21. Januar 200421 j Hallo, Nachtrag: Mein obiges Beispiel findet Dateien, die jünger sind, als 90 Tage. Um Dateien zu finden, die älter als 90 Tage sind, muss "+90" verwendet werden. Nic
21. Januar 200421 j Original geschrieben von nic_power find . -type f -mtime -90 -exec ls -l {} \; Alternativ: find . -type f -mtime -90 | xargs ls -l
21. Januar 200421 j Danke, hat mir sehr geholfen. Nur komisch, dass im man das mit + oder - vor der 90 nicht steht. Muss sowas irgendwo stehen. Aber danke nochmal :-)
21. Januar 200421 j Hallo, doch steht schon im Manual, ist nur etwas versteckt, da es nicht direkt bei den Optionen -mtime usw. zu finden ist sondern in der Section "numeric Arguments". Nic
Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.