进行全局文件搜索

时间:2014-12-15 16:44:38

标签: ruby file search find dir

在Ruby中有什么办法可以对给定文件进行全局搜索吗?

我尝试了Dir.glob,但它在当前目录中搜索。对于Find模块,我需要传递一个目录列表进行搜索。在我的例子中,我需要搜索可能在任何目录中的特定文件。

我如何在Ruby中执行此操作?

2 个答案:

答案 0 :(得分:2)

Find递归到子目录中,所以只需从根路径开始,它就会到处去:

Find.find('/') do |path|
  # look for your filename
end

答案 1 :(得分:1)

在拥有locate命令行工具的系统(如Linux和Mac OSX)上,您可以找到非常快这样的文件:

filename = "test"
array_of_files_found = `locate #{filename}`.split("\n")

请注意将用户提供的参数传递给命令行的危险。 See this answer for details

另请注意,在OSX上,您可能需要创建一个为locate命令提供支持的数据库,如下所示:

sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.locate.plist