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

GwenDragon
 2011-12-28 16:02
#155142 #155142
User since
2005-01-17
14760 Artikel
Admin1
[Homepage]
user image
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)

View full thread neueste Datei behalten, andere löschen