是否可以制作匹配当前目录和所有子目录中的文件的glob?

时间:2008-09-04 18:58:17

标签: shell glob

对于此目录结构:

.
|-- 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 个答案:

答案 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的回答。