Hallo Freund der Sonne,
ich möchte mit einem Perl-Skript einen Cron-Job bauen, der Dateien nach Alter verschiebt und auch andere sogar löscht. Es ist allerdings ausdrücklich gewünscht, dass nicht das Dateialter sondern ein Timestamp aus dem Namen der Datei dafür benutzt wird. Mit -M wäre es zwar einfacher, aber was soll's.
Ich habe hunderte Dateien nach folgendem Schema: "20081201BlaFasel.xyz". Diese Dateinamen wollte ich nun in einer Schleife zerlegen um den Timestamp zu extrahieren:
use strict;
use warnings;
for my $file (@Files)
{
my $TimeStampFromFile = substr($file,0,8);
my $YearFromFile = substr($file,0,4);
my $MonthFromFile = substr($file,3,2);
my $DayFromFile = substr($file,5,2);
}
Jetzt kann ich mit
my $Today = strftime("%Y%m%d",localtime(time));
zwar das aktuelle Datum herausfinden, aber wie errechne ich die Differenz? Die Dateien sollen mindestens 30 Minuten alt sein, bevor sie verschoben werden oder vom vorherigen Tag sein (Datumsgrenze).
Die zu löschenden Dateien sollen alle mindestens älter als 90 Tage sein.
Das löschen (unlink) bekomme ich hin. Aber ich weiß nicht, wie ich die Differenz mit dem Timestamp errechnen kann.