【发布时间】:2011-09-28 14:51:13
【问题描述】:
如何使用 Perl 扫描整个目录的内容,包括其子目录的内容,并在其中找到最新的 .pl 文件?
我想为目录树中所有.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 的similar 问题,我一直在尝试修改它以满足我的需要,但我现在在这里是出于显而易见的原因。
我用来在一个目录中获取最新文件 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";
【问题讨论】:
标签: perl path directory file-search datecreated