【问题标题】:Excluding certain directories with Find::File::Rule使用 Find::File::Rule 排除某些目录
【发布时间】:2014-07-29 14:15:30
【问题描述】:

我正在尝试在目录树中搜索 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 子文件夹,但它不起作用。它只检查文件名,而不检查路径名。

【问题讨论】:

    标签: perl


    【解决方案1】:

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

    忽略 CVS 目录

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

    注意这里使用了一个空规则。 Null 规则匹配他们看到的任何内容,因此其效果是匹配(并丢弃)名为“CVS”的目录或匹配任何内容。

    这种方法通常也可以用来忽略.git 之类的目录。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-12
      • 1970-01-01
      • 2012-11-07
      • 2015-09-26
      • 1970-01-01
      相关资源
      最近更新 更多