Shellskript zum löschen von Dateien

Ticha

Ticha

Linux Missionar
Hallo Leute,

ich habe eine regelmäßige Dateiflut auf einem Server. Dort werden jeden Tag Dateien erstllt. Bisher muss man da immer per Hand aufräumen, aber das ist auf die Dauer auch nervig.

Jetzt würde ich gerne ei Skript schreiben, dass in regelmäßigen Abständen die Dateien löscht, die ein gewisses Alter erreicht haben.

Im Grunde ist das ja nicht so schwer. Das Problem ist nur, dass ich nicht über den Dateinamen gehen kann, da dieser variabel ist. Ich würde gerne das original erstellungs oder Änderungsdatum benutzen. Ich habe jetzt schon Stundenlang gegoogelt, aber ich finde einfach nicht, wie ich auf das Datum einer Datei zugreifen kann :(

kann mir einer helfen?

Greetz
 
Die man-page von 'find' kann Dir das beantworten. Vielleicht hilft Dir auch der Befehl 'logrotate' weiter.
 
So vielleicht?

Code:
$ ls --full-time | awk '{print $6 " " $7 " " $8}'
 
Hallo Ticha,

so löscht du z.B. alle Scripte im Verz. /daten/scripte die nicht aus 2010 sind:

find /daten/scripte -type f -iname "*.sh" -not -newermt 20100101 -exec rm {} \;

Gruss underliner
 
cool underliner danke, jetzt muss ich mal versuchen das Ding zu verstehen :D
 
Hallo Ticha,

verstehen ? Eigentlich ganz einfach:

find /daten/scripte -type f -iname "*.sh" -not -newermt 20100101 -exec rm {} \;

suche im Verz.
-type f = nach Dateien ( files)
-name "...." = mit dem Namen (-iname ohne Groß/Kleinschreibung)
-not -newermt = die nicht neuer sind als mtime
20100101 = 2010 Jan 01
-exec = mit den gefundenen Dateien folgenden Befehl ausführen
rm = löschen
{} = Platzhalter für gefundene Dateien
\; = Endezeichen für find - es kommt nichts mehr.

Ich habe mir deine Frage noch einmal durchgelesen, und da du bestimmt nicht jeden Tag das Datum in deinem Script von Hand ändern willst, sollte man vielleicht doch mit -mtime arbeiten.

find /daten/scripte -type f -iname "*.sh" -mtime +0 -exec echo {} \;

erstmal mit echo testen und dann echo durch rm ersetzen.


Gruß underliner
 
habe ich das in den man pages richtig gelesen, dass ich mit "mtime +x" dem x die Tage angebe, die das Skript zurückgehen soll?also 24.03.2010 mit x=3 wird 21.03.2010?
 
Hi underliner,

willkommen im Forum. Schöner Einstand dein Post.

Zum Thema: Sinnvollerweise probierst du erstmal mit echo rm -v {}\; aus, dann siehst du, welche Befehle ausgeführt werden würden. Dann kann man das auch einfach mal so ausprobieren. Im übrigen würde ich mal die Forensuche bemühen, diese Frage wurde hier schon mindestens dreimal gestellt und ausführlich beantwortet.
-mtime 3 sollte passen für drei Tage.
 
:-) Ja klar fehlt da das Plus, Ticha hatte es ja schon geschrieben, da hab ich mich wohl vertippt
 

Ähnliche Themen

Automatisch mit ja antworten

Zurück
Oben