2012-11-14 26 views
0

我沒有看到find2perl文檔提及支持-mindepth-maxdepth參數的任何內容。下面是否可以提供find2perl mindepth和maxdepth參數?

的例子正常工作與find

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

問題:

  • 是否find2perl支持這樣的功能?
  • 如果是這樣,我該如何指定mindepthmaxdepth
+1

我不知道答案,但我喜歡你的問題ID以'1337'開頭。 :) – memowe

+0

文檔中均未提及。你爲什麼不試試看? – ikegami

+0

@ikegami:我試過了。交換機無法識別。 – Zaid

回答

4

File::Find::Rule有這些選項,它有一個命令行程序findrule

如果你想用File :: Find來做到這一點,你可以通過檢查文件的深度和設置$File::Find::prune來實現maxdepth當你太深了。 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; 
+0

看起來'F :: F'沒有設置來處理這些開關。好吧... – Zaid

1

我剛剛查看了find2perl的源代碼,以及File :: Find,它是find2perl使用的目錄遍歷器。目前沒有mindepth和maxdepth實施。

File :: Find在其名爲$ CdLvl的變量中出現跟蹤目錄時的跟蹤深度。您可以通過與$ CdLvl進行比較來實現mindepth和maxdepth。

+0

這是File :: Find內部的詞法變量。無法得到它。 – Schwern

+0

我微妙地鼓勵OP將這個特性添加到F :: F中。 –

相關問題