如何在Perl中获取目录中的所有文件,而不是子目录中的所有文件?

时间:2009-12-01 14:50:20

标签: perl file find

如何在目录列表中找到符合特定条件(-M,修改年龄(以天为单位))但在子目录中不匹配的所有文件?

我想使用File :: Find,但看起来它总是会转到子目录。

3 个答案:

答案 0 :(得分:8)

@files = grep { -f && (-M) < 5 } <$_/*> for @folders;

答案 1 :(得分:2)

readdirFile::Slurp::read_dirgrep结合使用。

 #!/usr/bin/perl

use strict;
use warnings;

use File::Slurp;
use File::Spec::Functions qw( canonpath catfile );

my @dirs = (@ENV{qw(HOME TEMP)});

for my $dir ( @dirs ) {
    print "'$dir'\n";
    my @files = grep { 2 > -M and -f }
                map { canonpath(catfile $dir, $_) } read_dir $dir;
    print "$_\n" for @files;
}

答案 2 :(得分:-1)

您可以在'wanted'函数中设置File :: Find :: prune以跳过目录树。添加类似$ File :: Find :: prune = 1 if(-d&amp;&amp; $ File :: Find :: name ne“。”);