如何.pl
使用 Perl 扫描整个目录的内容,包括其子目录的内容,并在其中找到最新的文件?
我想构建.pl
目录树中所有文件的完整文件路径的排序数组/列表。
因此,例如,如果我的基本目录是/home/users/cheeseconqueso/
我想在该目录和该路径中的任何子目录中搜索.pl
文件,然后.pl
按日期对文件进行排序。
最终结果将是一个数组,@pl_paths
,其中$pl_paths[0]
将类似于/home/users/cheeseconqueso/maybe_not_newest_directory/surely_newest_file.pl
从这个结果来看,我想执行该文件,但我认为一旦我弄清楚了排序的数组,在 中执行该文件$pl_paths[0]
就不会成为问题。
关于 SO有一个类似的问题,我一直在尝试修改以满足我的需要,但出于明显的原因,我现在在这里。
我用来在一个目录中获取最新文件 NAME 的代码是:
opendir(my $DH, $DIR) or die "Error opening $DIR: $!";
my %files = map { $_ => (stat("$DIR/$_"))[9] } grep(! /^\.\.?$/, readdir($DH));
closedir($DH);
my @sorted_files = sort { $files{$b} <=> $files{$a} } (keys %files);
print $sorted_files[0]."\n";