Thread neueste Datei behalten, andere löschen
(7 answers)
Opened by crojay at 2011-12-28 15:49
Die Zeitstempel einer Datei unter Windows kannst du genauer mit Win32::FileTime auslesen.
Ist auch unter AS erhältlich wie unter http://code.activestate.com/ppm/Win32-FileTime/ zu sehen. Teste bitte mal das: 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 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 } Editiert von GwenDragon: Subthread Last edited: 2011-12-29 11:49:19 +0100 (CET) |