2013-10-07 51 views
1

我有一些代碼解析目錄以獲取保存各種設備的主機名的文件。不過,我希望glob忽略一定深度的目錄,這可能嗎?因此,例如我有忽略與glob的目錄

my @files = glob('/tftpboot/configs/*/*'); 

我的文件夾結構看起來像

/tftpboot/configs/core/router1 (where router1 is a file) 
/tftpboot/configs/test/router2 (where router2 is a file) 
/tftpboot/configs/test/firewall/context (context is a file) 

我想獲得的文件路由器1,路由器2和類似深度的任何文件。不過,我想忽略任何文件的深度。有什麼建議麼?

謝謝

回答

2

跟進:

@files = grep { !-d $_ } @files; 
    -or- 
@files = grep { -f $_ } @files; 

您也可以使用類似File::Find::Rule

my @files = File::Find::Rule->file->in('/tftpboot/configs'); 
+1

'perldoc -f grep' – toolic

+1

這是一個Perl操作符。 '-d'和'-f'包裝了'stat'系統調用,這會降低使用'grep'的成本。 – ikegami

+0

很酷,非常感謝你的幫助 – Luky