Thread neueste Datei behalten, andere löschen
(7 answers)
Opened by crojay at 2011-12-28 15:49 Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 use strict; use warnings; my @files = glob("z/*.txt"); # alle Dateien des Verzeichnisses z einlesen # Array @files wird sortiert @files = sort { # Sortieren (stat $a)[9] < (stat $b)[9] # Sortierkriterium: nach Modifikationszeitstempel } @files; # neueste Datei ist ganz am Anfang des Arrays # und wird in Variable gespeichert my $newest = shift @files; print "Keeping: $newest\n"; # Debugausgabe # der Rest der Dateinamen ist in @files for (@files) { print "deleting $_\n"; # Debugausgabe unlink ($_) or warn "Cant delete $_\n"; # Datei löschen } Da der Zeistempel aber eben nur 1 Sekunde Auflösung hat, ist das nicht sehr genau. Dazu könnte auch folgendes verwendet werden: Vor Zeile 5 einfügen (ungetestet!): Code (perl): (dl
)
use Time::HiRes qw(stat); //EDIT: Leider löst stat bei mir auch nicht höher auf unter Windows 7. Editiert von GwenDragon: Kommentare hinzugefügt Last edited: 2011-12-28 16:57:07 +0100 (CET) |