我正在尝试从Perl脚本中的目录树中获取一组文件.有时我可以通过glob扩展来获取它们,但是我只能用正则表达式捕获我需要的东西.
例如,我可能希望获得verify/*.finished与shell扩展匹配的所有文件.当我知道"验证"目录所处的深度时,使用glob(<pattern>)比匹配所有内容更快File::Find(例如glob("*/*/*/verify/*.finished"),当我需要依赖正则表达式匹配时,我会有点卡住.
有没有办法通过glob正则表达式的灵活性来提高效率?
好吧,您可以生成完整的文件列表glob,然后grep使用正则表达式生成结果:
my @files = grep { /\.finished\z/ } glob '*/*/*/verify/*';
Run Code Online (Sandbox Code Playgroud)
编辑:
如果问题是如果有一个工具像glob一样工作但使用正则表达式,我相信答案是否定的.在完全一般的情况下,我没有看到你有任何选择,但遍历整个目录树,我怀疑你将能够做得更好File::Find.