簡體   English   中英

perl-File :: Find :: Rule僅在頂層排除單個目錄

[英]perl - File::Find::Rule to exclude a single dir only for the top level

我嘗試了以下排除目錄“ CVS”的方法

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

但是,這實際上排除了目錄樹中的所有CVS目錄。

這是一個例子:

  • 來源/ CVS(應排除)
  • 源/ A / CVS(不應排除)
  • 源/ B /
  • 源/ C /狗/ CVS(不應排除)

您可以使用與find dir -wholename dir/CVS -prune -o -print等效的Perl。

say
   for
      File::Find::Rule
         ->or(
            File::Find::Rule->exec(sub { $_[2] eq "$dir/CVS" })->prune->discard,
            File::Find::Rule->new(),
         )
         ->in($dir);

另一種方法是使用File :: Find :: Rule構建要搜索的目錄列表,然后使用File :: Find :: Rule的另一種用法搜索這些目錄。 (Perl等價於find ... -print0 | xargs -0 -I{} find {} ...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM