1

对于这个目录结构:

.
|-- README.txt
|-- firstlevel.rb
`-- lib
    |-- models
    |   |-- foo
    |   |   `-- fourthlevel.rb
    |   `-- thirdlevel.rb
    `-- secondlevel.rb

3 directories, 5 files

glob 将匹配:

firstlevel.rb 
lib/secondlevel.rb 
lib/models/thirdlevel.rb
lib/models/foo/fourthlevel.rb
4

4 回答 4

4

抱歉,如果我错过了问题的真正意义,但是如果我使用的是 sh/bash/etc,那么我可能会使用find来完成这项工作:

find . -name '*.rb' -type f

在脚本中使用 Glob 可能会有些麻烦,而find则更加灵活。

于 2008-09-04T20:01:53.510 回答
2

在 zsh 中,**/*.rb工作

于 2008-09-04T19:01:42.860 回答
1

在 Ruby 本身中:

Dir.glob('**/*.rb') perhaps?
于 2008-09-04T18:59:40.383 回答
0

看起来不能从bash

如果你使用zsh那么

ls **/*.rb

将产生正确的结果。

否则,您可以劫持ruby解释器(可能还有其他语言的解释器)

ruby -e "puts Dir.glob('**/*.rb')"

感谢 Chris 和 Gaius 的回答。

于 2008-09-04T19:38:36.173 回答