为什么 Ruby 的 fnmatch 不能将子目录中的文件与 FNM_PATHNAME 匹配?

问题描述 投票:0回答:1

Gitlab CI 将此代码用于 globs

File.fnmatch?(glob, path, File::FNM_PATHNAME | File::FNM_DOTMATCH | File::FNM_EXTGLOB)

如果我想匹配目录下的所有文件和文件夹我认为你必须这样做:

foo/*
foo/**/*

糟透了。我认为这会起作用:

foo/**

但它只有在没有

FNM_PATHNAME
的情况下才有效。这方面的 Ruby 文档非常糟糕。这里到底发生了什么?是否有一个单一的模式可以匹配
foo/a
foo/a/b

ruby gitlab fnmatch
1个回答
0
投票

好吧,事实证明

foo/**/*
确实匹配
foo/a
*只有当你有
FNM_PATHNAME
.

© www.soinside.com 2019 - 2024. All rights reserved.