Find.find("d") {|path| puts path}
我想排除某些类型的文件,说*.gif
和directories
。如何过滤Ruby Find.find()结果?
PS:我总能我的块中添加代码来检查文件名和目录类型,但我想find
本身来过滤文件给我。
Find.find("d") {|path| puts path}
我想排除某些类型的文件,说*.gif
和directories
。如何过滤Ruby Find.find()结果?
PS:我总能我的块中添加代码来检查文件名和目录类型,但我想find
本身来过滤文件给我。
我不认为你可以告诉找到这样做。你可以尝试使用Dir#[]
,它接受文件的大小。如果您正在寻找特定类型的文件或可以使用文件glob模式语言进行过滤的文件,则可能更适合。
如
Dir["dir/**/*.{xml,png,css,html}"]
会发现所有的XML,PNG,CSS和HTML的目录d下的文件。
查看the docs了解更多信息。
您不能让find
做到这一点,但Find
可能会有所帮助:在该块中,您需要检查当前路径是否是您想要排除的路径之一;如果是这样,请致电Find#prune
。这似乎是使用Find
时的标准习惯用法。
如果您决定改为使用Dir#[]
,您可以调用reject
其结果,传递一个块以排除某些类型的文件。但是,请注意,据我所知,Dir#[]
读取d
目录中的所有内容,然后才能过滤,而Find#prune
保证如果在传递给Find#find
的块中调用它,则不读取修剪的子目录的内容。