【问题标题】:Ruby 1.9.3 Dir.glob strange recursive match behaviourRuby 1.9.3 Dir.glob 奇怪的递归匹配行为
【发布时间】: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 上,最后一个命令按预期输出。
  • 错误报告链接:bugs.ruby-lang.org/issues/6977

标签: ruby ruby-1.9 ruby-1.9.3


【解决方案1】:

这是一个错误,已通过变更集 r36905 解决。耶!

https://bugs.ruby-lang.org/issues/6977

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-11-06
    • 2016-11-07
    • 2015-01-31
    • 1970-01-01
    • 2019-04-11
    • 2013-07-23
    • 2017-05-23
    相关资源
    最近更新 更多