首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何获取与glob匹配的文件路径,而不将它们放在文件系统中

如何获取与glob匹配的文件路径,而不将它们放在文件系统中
EN

Stack Overflow用户
提问于 2020-04-09 06:38:38
回答 1查看 34关注 0票数 0

我有一个相对于根目录的文件路径列表,正在尝试确定与glob模式匹配的路径。我正在尝试获得相同的结果,如果所有文件都在我的文件系统上,并且我从根目录运行Dir.glob(<my_glob_pattern>)

如果这是文件路径列表:

代码语言:javascript
运行
复制
foo/index.md
foo/bar/index.md
foo/bar/baz/index.md
foo/bar/baz/qux/index.md

这是glob模式:

代码语言:javascript
运行
复制
foo/bar/*.md

如果这些文件存在于我的文件系统中,Dir.glob('foo/bar/*.md')将只返回foo/bar/index.md

glob docs提到了fnmatch,我尝试使用它,但发现模式foo/bar/*.md匹配任何数量的嵌套子目录中的.md文件,这与Dir.glob('foo/bar/**/*.md')类似,而不仅仅是foo/bar目录的直接子目录:

代码语言:javascript
运行
复制
my_glob = 'foo/bar/*.md'

filepaths = [
  'foo/index.md',
  'foo/bar/index.md',
  'foo/bar/baz/index.md',
  'foo/bar/baz/qux/index.md',
]

# Using the provided filepaths
filepaths_that_match_pattern = filepaths.select{|path| File.fnmatch?(my_glob, path)}.sort

# If the filepaths actually existed on my filesystem
filepaths_found_by_glob = Dir.glob(my_glob).sort

raise Exception.new("They don't match!") unless filepaths_that_match_pattern == filepaths_found_by_glob

我错误地期望上面的代码可以工作,但filepaths_found_by_glob只包含直接的子对象,而filepaths_that_match_pattern也包含所有嵌套的子对象。

如果我的文件系统上没有文件路径,我如何才能获得与Dir.glob相同的结果?

EN

Stack Overflow用户

发布于 2021-12-15 11:56:04

您可以在调用File.fnmatch函数时使用标志File::FNM_PATHNAME。因此您的函数调用将如下所示- File.fnmatch(pattern, path, File::FNM_PATHNAME)

您可以在此处查看与其用法相关的示例:https://apidock.com/ruby/File/fnmatch/class

票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61111160

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档