我尝试了以下操作以排除目录“ CVS”
my $rule = File::Find::Rule->new;
$rule->or($rule->new->directory->name('CVS')->prune->discard, $rule->new);
但是,这实际上排除了目录树中的所有CVS目录。
这里是一个例子:
答案 0 :(得分:2)
您可以使用等效于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的另一种用法搜索这些目录。 (相当于find ... -print0 | xargs -0 -I{} find {} ...
的Perl。)