Schrift
[thread]9963[/thread]

Welche Datei wurde zuletzt geändert?



<< >> 4 Einträge, 1 Seite
jogi
 2007-08-04 15:23
#97498 #97498
User since
2007-07-25
55 Artikel
BenutzerIn
[default_avatar]
Hi!

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#!/usr/bin/perl -w

use strict;

my $dir = "C:\\Dokumente und Einstellungen\\ich\\Anwendungsdaten\\tor\\cached-status\\";

opendir (DIR, "$dir") or die $!;
my @entries = readdir(DIR);
close (DIR);

foreach my $zeile (@entries) {
next if $zeile =~ /\./;
$zeile = $dir . $zeile;
my @info = stat($zeile);
print "$info[8]\n";
}

Im Verzeichnis $dir siehts so aus:

7EA6EAD6FD83083C538F44038BBFA077587DD755
847B1F850344D7876491A54892F904934E4EB85D
719BE45DE224B607C53707D0E2143E2D423E74CF
FFCB46DB1339DA84674C70D7CB586434C4370441

$info[8] enthält das Änderungsdatum.

Ich brauche nun die Datei, die zuletzt geändert wurde. Wie finde ich das am intelligentesten heraus? Einfach mit sort() oder fällt jemandem ne bessere Methode ein?

Ciao,
jogi
renee
 2007-08-04 15:39
#97501 #97501
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
[9] enthält "last modified time" . [8] ist der Zeitpunkt des letzten Zugriffs...

So könntest Du es machen:
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
#!/usr/bin/perl -w

use strict;

my $dir = "C:\\Dokumente und Einstellungen\\ich\\Anwendungsdaten\\tor\\cached-status\\";

opendir (DIR, "$dir") or die $!;
my @entries = readdir(DIR);
close (DIR);

my $max_time = 0;
my $entry = '';
foreach my $zeile (@entries) {
     next if $zeile =~ /^\.\.?$/;
     my @info = stat($dir . $zeile);
     if( $info[9] > $max_time ){
          $max_time = $info[9];
          $entry = $zeile; 
     }
}

print "Die Datei $entry wurde als letztes aktualisiert (Zeitstemple: $max_time)\n";
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
renee
 2007-08-04 15:41
#97502 #97502
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Geschickter wäre es, wenn Du statt der foreach-Schleife alles in einer while-Schleife machst. Das spart Zeit und Speicher...

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
#!/usr/bin/perl -w

use strict;

my $dir = "C:\\Dokumente und Einstellungen\\ich\\Anwendungsdaten\\tor\\cached-status\\";
my $max_time = 0;
my $entry = '';

opendir (DIR, "$dir") or die $!;

while( my $zeile = readdir DIR) {
     next if $zeile =~ /^\.\.?$/;
     my @info = stat($dir . $zeile);
     if( $info[9] > $max_time ){
          $max_time = $info[9];
          $entry = $zeile; 
     }
}

close (DIR);

print "Die Datei $entry wurde als letztes aktualisiert (Zeitstemple: $max_time)\n";
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
jogi
 2007-08-04 16:01
#97503 #97503
User since
2007-07-25
55 Artikel
BenutzerIn
[default_avatar]
Wie simpel diese Lösung ist! Warum bin ich da nicht selber drauf gekommen. :)

Danke!
<< >> 4 Einträge, 1 Seite



View all threads created 2007-08-04 15:23.