【发布时间】:2012-09-03 03:51:04
【问题描述】:
假设目录结构为:
a/b/c/d/e/f/g/h
我正在尝试通过以下方式找到“h”:
Dir.glob('a/**/f/g/h')
但是这不起作用。有什么想法吗?
你可以试试下面的测试用例:
$ /usr/bin/ruby -v
ruby 1.9.3p194 (2012-04-20 revision 35410) [x86_64-linux]
$ mkdir -p a/b/c/d/e/f/g/h
$ ruby -e "puts Dir.glob('a/**/*')"
a/b
a/b/c
a/b/c/d
a/b/c/d/e
a/b/c/d/e/f
a/b/c/d/e/f/g
a/b/c/d/e/f/g/h
$ ruby -e "puts Dir.glob('a/**/h')"
a/b/c/d/e/f/g/h
$ ruby -e "puts Dir.glob('a/**/g/h')"
a/b/c/d/e/f/g/h
$ ruby -e "puts Dir.glob('a/**/f/g/h')"
**nothing**
【问题讨论】:
-
我越深入研究这个,我就越认为这可能是一个值得向上游报告的错误。似乎只要有两个以上的尾随路径元素,匹配就会失败。我在下面的回答解决了当前的行为,但它可能 是 Dir#glob 中的一个错误,因为 File#fnmatch 可以正常工作。
-
我认为这也是一个错误。在 REE 1.8.7 上,最后一个命令按预期输出。
标签: ruby ruby-1.9 ruby-1.9.3