我需要编写一个文件glob,它将匹配除了某个特定文件夹(例如高级文件夹foo/
)中包含的所有文件以外的所有文件。
我得到了以下的glob:
!(foo)/**/*
然而,在Ruby的
File.fnmatch
中,这个glob似乎无法匹配任何文件(即使设置了FNM_PATHNAME
和FNM_DOTMATCH
为true
)。另外,Ruby的glob解释器似乎与JavaScript的行为不同: JavaScript glob解释器可以匹配所有字符串。
Ruby glob解释器不能匹配任何字符串。
2.6.2 :027 > File.fnmatch("!(foo)/**/*", "hello/world.js")
=> false
2.6.2 :028 > File.fnmatch("!(foo)/**/*", "test/some/globs")
=> false
2.6.2 :029 > File.fnmatch("!(foo)/**/*", "foo/bar/something.txt")
=> false
File::fnmatch
通配符模式的否定文档。 - engineersmnky