Thread neueste Datei behalten, andere löschen (7 answers)
Opened by crojay at 2011-12-28 15:49

GwenDragon
 2011-12-29 10:43
#155155 #155155
User since
2005-01-17
14760 Artikel
Admin1
[Homepage]
user image
Die Zeitstempel einer Datei unter Windows kannst du genauer mit CPAN: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)

View full thread neueste Datei behalten, andere löschen