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