Ruby目录全局对象在绝对路径上递归

2ledvvac  于 2023-01-12  发布在  Ruby
关注(0)|答案(2)|浏览(168)

我正在尝试获取绝对路径的Dir.glob:

path = "/Users/ken/templates"
scaffold = Dir.glob("#{path}/*.erb", File::FNM_DOTMATCH)
p scaffold.inspect

这是我的目录结构:

/Users/ken/templates/test.erb
/Users/ken/templates/test2.erb
/Users/ken/templates/app/one.erb
/Users/ken/templates/app/two.erb

当我在目录上运行时,我只得到目录根目录下的文件:

"[\"/Users/ken/farmstead/test.erb\", \"/Users/ken/farmstead/test2.erb\"]"

但没有应用程序子目录的条目。
我如何让Glob在绝对路径上递归?

hc8w905p

hc8w905p1#

要进入子目录,需要指示Dir#glob进入子目录:

#                            ⇓⇓⇓
scaffold = Dir.glob("#{path}/**/*.erb", File::FNM_DOTMATCH)

引用我链接的文档:


 递归匹配目录。
xa9qqrwz

xa9qqrwz2#

告诉glob绝对目录的一个更简洁的方法是使用base参数,如下所示:

Dir.glob("**/*.erb", base: path)

图片来源:www.example.comhttps://ruby-doc.org/3.2.0/Dir.html#method-c-glob

相关问题