首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何过滤Ruby Find.find()结果?

如何过滤Ruby Find.find()结果?
EN

Stack Overflow用户
提问于 2010-09-24 21:05:32
回答 2查看 3.4K关注 0票数 4
代码语言:javascript
复制
Find.find("d") {|path| puts path}

我想排除某些类型的文件,比如*.gifdirectories

PS: --我总是可以在我的块中添加代码来检查文件名和目录类型,但是我希望find本身能够为我过滤文件。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-09-24 21:50:10

我认为您无法告诉find做什么,that.You可以尝试使用Dir#[],它接受文件全局。如果您正在寻找特定类型的文件,或者可以使用文件glob模式语言进行筛选的文件,则可能会更适合。

例如

代码语言:javascript
复制
Dir["dir/**/*.{xml,png,css,html}"]

将找到目录d下的所有xml、png、css和html文件。

有关更多信息,请访问医生们

票数 8
EN

Stack Overflow用户

发布于 2010-09-25 12:47:10

您不能让find这样做,但是Find可能会有所帮助:在块中,您需要检查当前路径是否是您想要排除的路径之一;如果是,那么调用Find#prune。这似乎是使用Find时的标准成语。

如果您决定使用Dir#[],则可以对其结果调用reject,传递一个块以排除某些类型的文件。但是,请注意,据我所知,Dir#[]在筛选之前读取d目录的所有内容,而Find#prune保证如果在传递给Find#find的块中调用它,则不会读取经过修剪的子目录的内容。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3790979

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档