title image


Smiley Re: Löschen


ich möchte innerhalb eines Verzeichnisses alles (Ordner + Dateien) älter 3 Tagen löschen, aber das zu durchsuchende Verzeichnis soll erhalten bleiben.

Wie mache ich das ???

find /data/test -name '*.*' -type f -mtime +3 -exec rm -r {} \;



Warum fragst du, wenn du dir schon selbst die Frage beantwortest?



Zu deinem find Befehl:



Mit -type f hast du schon eingeschränkt dass nur Dateien gefunden werden sollen. Verzeichnisse, SymLinks, Pipes, etc. werden dadurch gar nicht erst betrachtet.



In deinem Aufruf ist der rm Parameter -r überflüssig. Ein rm -f würde vielleicht schon eher Sinn machen.



Wenn du allerdings eh alle Dateien unabhängig vom Dateinamen löschen möchtest, dann kannst du das -name '*.*' auch weglassen.



Können deine Dateinamen Leerzeichen enthalten? Falls ja dann solltest du doppelte Anführungszeichen um die geschweiften Klammern schreiben:-exec rm "{}" \;

Also:

find /data/test -type f -mtime +3 -exec rm "{}" \;



Alternativ kannst du anstelle von -exec den -print0 Parameter verwenden und dann das ganze mit einer Pipe an xargs übergeben.

find /data/test -type f -mtime +3 -print0 | xargs rm



Oder als eine Mischung von find mit dem while Befehl der Bash Shell:

find /data/test -type f -mtime +3 -print | while read datei ; do rm -f "${datei}" ; done





geschrieben von

Login

E-Mail:
  

Passwort:
  

Beitrag anfügen

Symbol:
 
 
 
 
 
 
 
 
 
 
 
 
 

Überschrift: