0

我没有看到find2perl文档提到任何关于支持-mindepth-maxdepth论点的内容。

下面的示例适用于find

$ find2perl . -mindepth 2 -maxdepth 2 -name "*txt" -type f
Unrecognized switch: -mindepth

问题:

  • 是否find2perl支持这样的功能?
  • 如果是这样,我该如何指定mindepthmaxdepth
4

2 回答 2

4

File::Find::Rule有这些选项,它有一个命令行程序findrule

如果你想用 File::Find 来做,你可以通过检查文件的深度和设置深度来实现 maxdepth $File::Find::prune。mindepth 是类似的,但是你会提前从你的函数中返回。今天早上我感觉很懒,所以我会把编码留给其他人。

更新:其他人进行了编程,即 File::Find::Rule。 这是他们使用的代码

my $maxdepth = 2;
my $mindepth = 2;
my $topdir   = "something/something/something";
sub wanted {
    # figure out the relative path and depth
    my $relpath = $File::Find::name;
    $relpath =~ s{^\Q$topdir\E/?}{};
    my $depth = File::Spec->splitdir($relpath);

    defined $maxdepth && $depth >= $maxdepth
       and $File::Find::prune = 1;

    defined $mindepth && $depth < $mindepth
       and return;

    ...your code goes here...
}

find \&wanted, $topdir;
于 2012-11-14T17:37:57.900 回答
1

我只是查看了 find2perl 和 File::Find 的源代码,它是 find2perl 使用的目录遍历器。目前既没有实现 mindepth 也没有实现 maxdepth。

File::Find 在遍历目录时显示轨道深度,在一个名为 $CdLvl 的变量中。您可以通过与 $CdLvl 进行比较来实现 mindepth 和 maxdepth。

于 2012-11-14T16:27:50.493 回答