【发布时间】:2015-10-09 19:49:38
【问题描述】:
我正在尝试使用 File::Find::Rule 模块在子目录中查找特定文件 (output.txt),如果不存在则在根目录中搜索以查看它是否存在。问题是存在多个 output.txt 文件,因此如果找不到原始文件,我们应该只寻找其他文件。
目录结构基本上是这样的
top
level-1-a
level-2-a
output.txt
level-2-b
output.txt
level-1-b
level-2-a
output.txt
level-2-b
output.txt
现在我有:
@files = File::Find::Rule->file()->name($output)->in($sub_dir);
if ( ! @files ) {
@files = File::Find::Rule->file()->name($output)->in($root_dir);
}
行为在哪里,我们首先在 \top\level-1-a 中查找 output.txt,然后在 level-2-a 和 level-2-b 中找到匹配项。如果level-1-a 下没有匹配的文件,我们将在\top 上进行相同的调用,以查找出现在level-1-b 目录中的匹配项。有没有更简洁的方法来检查“if-else”的想法?
【问题讨论】:
-
听起来你想获取某个顶级目录下所有匹配文件的列表,对它们进行排序,然后只保留第一个元素。
-
如果 $subdir 非常大,您可以避免第二次搜索树的那部分以加快速度。否则,你所拥有的对我来说看起来不错。
标签: perl