用glob忽略目录

时间:2013-10-07 14:09:44

标签: perl

我有一些代码可以解析目录以获取包含各种设备主机名的文件。但是我希望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)

我想获取文件router1,router2和任何类似深度的文件。但是,我想忽略任何任何深度文件的上下文。有什么建议吗?

谢谢

1 个答案:

答案 0 :(得分:2)

跟进:

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

您还可以使用File::Find::Rule之类的内容。

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