2013-10-07 46 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