是否可以设计一个与当前目录和所有子目录中的文件匹配的glob?

时间:2020-03-05 18:47:49  来源:igfitidea点击:

对于此目录结构:

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

3 directories, 5 files

全局匹配:

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

解决方案

回答

在Ruby本身中:

Dir.glob('**/*.rb') perhaps?

回答

在zsh中,** / *。rb有效

回答

看起来无法通过bash完成

如果我们使用zsh,那么

ls **/*.rb

将产生正确的结果。

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

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

感谢克里斯和盖乌斯的回答。

回答

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

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

在脚本中使用Glob时可能会有点讨厌,并且查找更加灵活。