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 }
use Time::HiRes qw(stat);
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
#!/usr/bin/perl use strict; use warnings; use Win32::FileTime; sub modify_timestamp { my $filename = shift; my $filetime = Win32::FileTime->new( $filename ); my $filestamp = sprintf( "%04d%02d%02d%02d%02d%02d.%d", $filetime->Modify( 'year', 'month', 'day', 'hour', 'minute', 'second', 'msecond' ) ); return $filestamp; } my @files = glob("*.txt"); # alle Dateien des Verzeichnisses z einlesen # Array @files wird sortiert @files = sort { # Sortieren modify_timestamp($a) < modify_timestamp($b) # Sortierkriterium } @files; # neueste Datei ist ganz am Anfang des Arrays # und wird in Variable gespeichert my $newest = shift @files; print "Keeping: $newest with timestamp ",modify_timestamp($newest),"\n"; # Debugausgabe # der Rest der Dateinamen ist in @files for my $file (@files) { print "deleting $file with timestamp ", modify_timestamp($file), "\n"; # Debugausgabe unlink ($file) or warn "Cant delete $file \n"; # Datei löschen }