Is it possible to craft a glob that matches files in the current directory and all subdirectories?

StackOverflow https://stackoverflow.com/questions/44481

  •  09-06-2019
  •  | 
  •  

Question

For this directory structure:

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

3 directories, 5 files

The glob would match:

firstlevel.rb 
lib/secondlevel.rb 
lib/models/thirdlevel.rb
lib/models/foo/fourthlevel.rb
Was it helpful?

Solution

Apologies if I've missed the real point of the question but, if I was using sh/bash/etc., then I would probably use find to do the job:

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

Globs can get a bit nasty when used from within a script and find is much more flexible.

OTHER TIPS

In zsh, **/*.rb works

In Ruby itself:

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

Looks like it can't be done from bash

If you using zsh then

ls **/*.rb

will produce the correct result.

Otherwise you can hijack the ruby interpreter (and probably those of other languages)

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

Thanks to Chris and Gaius for your answers.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top