Hallo
ich benötige ein kleines Programm, dass das Erstelldatum von Dateien (z.B. mit der Endung .txt) überprüft und diese Dateien, wenn sie älter sind als z.B. 15 Minuten automatisch löscht.
Nun habe ich von Programmierung eigentlich keine Ahnung, deshalb hoffe ich auf Eure Hilfe.
Danke
Michael
Dateien nach alter löschen
Re: Dateien nach alter löschen
Du wirst das Kommando "stat" benötigen, und das date-Kommando verwendet eine GNU-Erweiterung. Solange Du Dich auf rein auf Linux-Boxen bewegst, ist das kein Problem.
<blockquote><pre><font size="1" face="">code:</font><hr><font face="Courier New" size="2">
stat -t *.txt | awk -v jetzt=$(date "+%s") minuten=15 '
$13 + minuten * 60 < jetzt {print "rm",$1}' | sh
</font><hr></pre></blockquote>
stat(1) gibt in knapper (-t, <u>t</u>erse) Form die Infos aus der Inode der Dateien aus. Das 1. Feld ist der Dateiname, das 13. die Modification-Time (was man normalerweise beim "ls -l" als Zeit angezeigt bekommt). Das Format ist dabei "Sekunden seit dem 1.1.1970 UTC, 00:00:00. Im selben Format bekommt awk(1) in der Variablen "jetzt" die aktuelle Zeitübergeben. Wenn die Modification-Time + 15 min kleiner als "jetzt" ist, wird ein Löschkommando zur Datei ausgegeben. Über die Pipe rutscht das Kommando in eine Shell, die das Kommando ausführt.
Jochen
<blockquote><pre><font size="1" face="">code:</font><hr><font face="Courier New" size="2">
stat -t *.txt | awk -v jetzt=$(date "+%s") minuten=15 '
$13 + minuten * 60 < jetzt {print "rm",$1}' | sh
</font><hr></pre></blockquote>
stat(1) gibt in knapper (-t, <u>t</u>erse) Form die Infos aus der Inode der Dateien aus. Das 1. Feld ist der Dateiname, das 13. die Modification-Time (was man normalerweise beim "ls -l" als Zeit angezeigt bekommt). Das Format ist dabei "Sekunden seit dem 1.1.1970 UTC, 00:00:00. Im selben Format bekommt awk(1) in der Variablen "jetzt" die aktuelle Zeitübergeben. Wenn die Modification-Time + 15 min kleiner als "jetzt" ist, wird ein Löschkommando zur Datei ausgegeben. Über die Pipe rutscht das Kommando in eine Shell, die das Kommando ausführt.
Jochen