我没有看到find2perl
文档提及有关支持-mindepth
和-maxdepth
参数的任何内容。
以下示例适用于find
:
$ find2perl . -mindepth 2 -maxdepth 2 -name "*txt" -type f
Unrecognized switch: -mindepth
问题:
find2perl
是否支持此类功能?mindepth
和maxdepth
?答案 0 :(得分:4)
File::Find::Rule有这些选项,它有一个命令行程序findrule。
如果你想用File :: Find来做,你可以通过检查文件的深度来实现maxdepth,并在你走得太深时设置$File::Find::prune
。 mindepth类似,但你早点从你的函数返回。我今天早上感觉很懒,所以我会把编码留给别人。
更新:其他人做了编程,即File :: Find :: Rule。 Here's the code they use
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;
答案 1 :(得分:1)
我只是查看了find2perl的源代码,以及File :: Find,它是find2perl使用的目录遍历器。目前尚未实施mindepth和maxdepth。
File :: Find在名为$ CdLvl的变量中遍历目录时显示轨道深度。您可以通过与$ CdLvl进行比较来实现mindepth和maxdepth。