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 でそれを行いたい場合は、ファイルの深さをチェックし、深$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;
于 2012-11-14T17:37:57.900 に答える
1

find2perl と、find2perl が使用するディレクトリ トラバーサーである File::Find のソース コードを調べました。mindepth も maxdepth も現在実装されていません。

File::Find は、$CdLvl と呼ばれる変数で、ディレクトリをトラバースする際にトラックの深さを表示します。$CdLvl と比較することで、mindepth と maxdepth を実装できる可能性があります。

于 2012-11-14T16:27:50.493 に答える