Find.find("d") {|path| puts path}
我想要排除某些类型的文件,例如*.gif
和directories
。
PS: 我总是可以在我的块中添加代码来检查文件名和目录类型,但我希望find
本身可以过滤文件我
答案 0 :(得分:8)
我认为你不能告诉他们这样做。你可以尝试使用接受文件globs的Dir#[]
。如果您正在寻找特定类型的文件,或者可以使用文件glob模式语言过滤的文件,那么它可能更合适。
例如
Dir["dir/**/*.{xml,png,css,html}"]
会在目录d。
下找到所有xml,png,css和html文件查看the docs了解详情。
答案 1 :(得分:4)
你不能让find
这样做,但是Find
可能会有所帮助:在这个区块中,你需要检查当前路径是否是你想要排除的路径之一;如果是,请拨打Find#prune
。这似乎是使用Find
时的标准习语。
如果您决定使用Dir#[]
,则可以在其结果上调用reject
,传递一个块以排除某些类型的文件。但是,请注意,据我所知,Dir#[]
在您可以过滤之前读取d
目录的所有内容,而Find#prune
保证不读取已修剪子目录的内容在传递给Find#find
的块中调用它。