2

我试图在目录中按文件名查找文件。我不确定解决这个问题的最佳方法是什么。该文件可以嵌套在根目录中的其他目录中。

4

3 回答 3

4

您可以使用Dir.globDir[]

Dir['the_directory/**/the_filename']

**递归匹配 0 个或多个目录。它返回匹配的文件名数组。

于 2012-11-29T16:13:15.163 回答
4

您可以使用Dir.glob,例如:

Dir.glob(File.join("**","*.rb"))

它将递归地在当前目录中查找“*.rb”文件。

于 2012-11-29T16:18:36.763 回答
3

这应该适合你:

require 'find'

file_name = /log\Z/
path = './'

found_files = Find.find(path).inject([]) do |files, entry|
  File.file?(entry) && File.basename(entry) =~ file_name ?
    files << entry : files
end

p found_files
#=> ["./Maildir/dovecot.index.log", "./pgadmin.log"]

改变file_namepath你的需要。

于 2012-11-29T16:03:51.307 回答