Hilmar Preuße <[email protected]> (Sa 11 Feb 2023 12:50:20 CET): > Moin, > zu doof, google zu bedienen (nein bei ChatGPT war ich noch nicht). Ich > suche in einer Directory Structur eine Liste von Files, die aktueller > sind als ein Referenz-File. Aktuell mache ich das so: > > my @files1 = `find /path/to/pen8*/pools/*/logf -type f -newer $touchfile > -name "Psipenta_*.log" 2> /dev/null`;
Das wäre meine Variante:
```
#!/usr/bin/perl
use strict;
use warnings;
use File::Find;
use File::FnMatch 'fnmatch';
my $touchfile = shift // die "need name of touchfile\n";
my @dirs = @ARGV or die "need directories\n";
sub newer {
my $files = shift;
my $ref = -M shift;
my $pattern = shift;
return sub {
return unless fnmatch $pattern, $_; # name is cheap
return unless -f; # implies a stat, may be
expensive
return if -M _ > $ref; # "_" uses stat cache
push @$files, $File::Find::name;
}
}
my @files;
find(newer(\@files, $touchfile, "*.log"), @dirs);
print join "\n", @files;
```
--
Heiko
signature.asc
Description: PGP signature
