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
my @dirs = glob "/var/lib/testverzeichnis/Projekte/Projektenummern"; for $dir (@dirs) { print "$dir\n"; opendir (DIR, $dir); find(\&wanted,$dir) ; sub wanted { my $file = $File::Find::name; push (@files,$file) if(-M $file > 0); } foreach $files (@files) { $alter = -M "$files"; $kurzalter = sprintf "%.0f",$alter; print "---- $kurzalter Tage - $files\n"; if ($kurzalter <90) {$filesdann = 1} else{ $filesdann = 0 } } closedir (DIR); } if ($filesdann == 0) { print "$dir - Alter: $kurzalter Tage\n"; }
"Matze2.plIch möchte aber das dieses Alter (25Tage; ist zufällig das jüngste Datum) auf den Ordner 1275 Angewendet wird.
kann mir jemand helfen?
1 2 3 4 5 6 7 8 9 10
sub newestDate { my $path = shift; opendir(my $DH, $path); return( (map {$_->[0]} sort {$a->[1] <=> $b->[1]} map{[$_, -M "$path/$_"]} readdir $DH )[0]); }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
my @dirs = glob "/var/lib/testverzeichnis/Projekte/Projektenummern/12/1234"; foreach $dir (@dirs) { find(\&newestDate,$dir) ; } sub newestDate { my $path = shift; opendir(my $DH, $path); return( (map {$_->[0]} sort {$a->[1] <=> $b->[1]} map{[$_, -M "$path/$_"]} readdir $DH )[0]); }
say "Neueste Datei/Verzeichnis in root ist: ", newestDatei("/");
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
my @dirs = glob "/var/lib/testverzeichnis/Projekte/Projektenummern/*/*"; foreach $dir (@dirs) { open (DIR,">>/var/lib/testverzeichnis/Projekte/tot.txt"); print DIR "\n$dir: \n"; print DIR newestDate("$dir"); close (DIR) } sub newestDate { $path = shift; opendir( $DH, $path); return( (map{$_->[0]} sort {$a->[1] <=> $b->[1]} map{[$_, -M "$path/$_"]} readdir $DH )[0]); }
2014-11-03T16:08:30 Matze2.plAber ich denke damit kann ich nicht das Datum dieser "Datei" herrausbekommen da manches ja Ordner sind.
QuoteKann ich hier:
/var/lib/testverzeichnis/Projekte/Projektenummern/19/1973:
alles.txt
den Pfad der ausgeben lassen?
QuoteKann ich hier:
/var/lib/testverzeichnis/Projekte/Projektenummern/19/1973:
alles.txt
den Pfad der ausgeben lassen?
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 use warnings; use strict; use File::Find; my $mtime = 0; my $latestfile = ""; find(\&wanted, "/var/temp/yourdirectory"); print "$latestfile\n"; sub wanted { my $name = $File::Find::name; if (-f $name) { my @stats = stat($name); if ($stats[9] > $mtime) { $mtime = $stats[9]; $latestfile = $name; } } }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
my $mtime = 0; my $latestfile = ""; find(\&wanted, "/var/bin/testverzeichnis/Projekte/Projektenummern/12/1234"); print "$latestfile\n"; sub wanted { my $name = $File::Find::name; if (-f $name) { my @stats = stat($name); if ($stats[9] > $mtime) { $mtime = $stats[9]; $latestfile = $name; } } }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
my @dirs = glob "/var/lib/testverzeichnis/Projekte/Projektenummern/*/*/"; foreach $dir (@dirs) { find(\&wanted, "$dir"); print "$dir\n$latestfile\n"; } sub wanted { my $name = $File::Find::name; if (-f $name) { my @stats = stat($name); if ($stats[9] > $mtime) { $mtime = $stats[9]; $latestfile = $name; } } }
2014-11-04T13:57:40 Matze2.plwenn ich das aber in einer schleife ablaufen lasse:
"Matze2.plIch hab einen ein Verzeichnis (/var/lib/testverzeichnis/Projekte/12/1234
in "1234" sind weitere Unterordner in denen jeweils Dateien liegen.
jetzt möchte ich das die allerneuste Datei aus allen Unterorndern gefunden wird
print $name . "\n";
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
#!/usr/bin/perl use warnings; use strict; use File::Find; my @dirs = glob("/var/lib/testverzeichnis/Projekte/Projektenummern/*/*"); my $latestfile; my $mtime; foreach my $dir (@dirs) { $latestfile = ""; $mtime = 0; find(\&wanted, "$dir"); print "$dir\n"; if ($latestfile eq "") { print "No last file found.\n\n"; } else { print "$latestfile\n\n"; } } sub wanted { my $name = $File::Find::name; if (-f $name) { my @stats = stat($name); if ($stats[9] > $mtime) { $mtime = $stats[9]; $latestfile = $name; } } }