使用Find :: File :: Rule排除某些目录

时间:2014-07-29 05:41:17

标签: perl

我正在尝试在目录树中搜索Perl文件。我想从结果中排除一些目录。这可能是Find::File::Rule吗?我试过了:

use warnings;
use strict;
use feature qw(say);
use File::Find::Rule::Perl;

my $dir='test';
my @files=File::Find::Rule->perl_file->name(qr/^.*debug.*\.(pm|pl)$/)->in($dir);
say join ("\n",@files);

要从结果中排除debug子文件夹,但它不起作用。它只检查文件的名称,而不是路径名。

1 个答案:

答案 0 :(得分:3)

在模块文档中有一个如何执行此操作的示例:Further Examples

  

忽略CVS目录

 my $rule = File::Find::Rule->new;
 $rule->or($rule->new
                ->directory
                ->name('CVS')
                ->prune
                ->discard,
           $rule->new);
     

请注意这里使用空规则。空规则匹配他们看到的任何内容,因此效果是匹配(和丢弃)名为'CVS'的目录或匹配任何内容。

此方法通常也可以忽略这些类似.git目录。