1

我需要找到某个目录名,我有一个 greps 最新文件的代码。有人可以在不使用 perl 脚本中的 ls -ltr 命令的情况下帮助我找到 ls -ltr dirname*。下面的代码可能会有所帮助:

my $dir = "/abc/pqr/xyz";
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 "the file is $sorted_files[0] \n";

我需要在 /abc/pqr/xyz 中找到一个目录名称为 new_123。作为 ls -ltr new*,因为这些目录是每天创建的,所以要寻找 new*。

4

1 回答 1

0

它有点不清楚你在问什么,但是:

我需要在 /abc/pqr/xyz 中找到一个目录名称为 new_123。作为 ls -ltr new*,因为这些目录是每天创建的,所以要寻找 new*。

为此,您可以使用glob

我的 PERL 有点生锈,但我认为这样做可以:

while (my $dir = glob("new*")) {

        next unless (-d "$dir");
        print "$dir\n";

}

如果系统调用不是限制,您可以使用 find:

find /some/path/ -type d -name "new*"

于 2012-08-27T05:34:13.647 回答