对于此目录结构:
.
|-- 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
抱歉,如果我错过了问题的真正意义,但是,如果我使用sh / bash / etc,那么我可能会使用find来完成这项工作:
find . -name '*.rb' -type f
从脚本中使用时,Globs可能会有点讨厌,而且发现更灵活。
在zsh,**/*.rb
工作
在Ruby本身:
Dir.glob('**/*.rb') perhaps?
看起来无法从bash
完成
如果你使用zsh
然后
ls **/*.rb
会产生正确的结果。
否则你可以劫持ruby
解释器(可能还有其他语言的解释器)
ruby -e "puts Dir.glob('**/*.rb')"
感谢Chris和Gaius的回答。