File::Find::Ruleにはこれらのオプションがあり、コマンド ライン プログラムのfindruleがあります。
File::Find でそれを行いたい場合は、ファイルの深さをチェックし、深$File::Find::prune
すぎる場合に設定することで maxdepth を実装できます。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;