Est-il possible de créer un glob qui correspond aux fichiers du répertoire courant et de tous les sous-répertoires ?
Question
Pour cette structure de répertoires :
.
|-- README.txt
|-- firstlevel.rb
`-- lib
|-- models
| |-- foo
| | `-- fourthlevel.rb
| `-- thirdlevel.rb
`-- secondlevel.rb
3 directories, 5 files
Le glob correspondrait à :
firstlevel.rb
lib/secondlevel.rb
lib/models/thirdlevel.rb
lib/models/foo/fourthlevel.rb
La solution
Toutes mes excuses si j'ai raté le véritable point de la question mais, si j'utilisais sh/bash/etc., alors j'utiliserais probablement trouver pour faire le travail :
find . -name '*.rb' -type f
Les Globs peuvent devenir un peu désagréables lorsqu'ils sont utilisés à partir d'un script et trouver est beaucoup plus flexible.
Autres conseils
Dans zsh, **/*.rb
travaux
Dans Ruby lui-même :
Dir.glob('**/*.rb') perhaps?
On dirait que cela ne peut pas être fait à partir de bash
Si vous utilisez zsh
alors
ls **/*.rb
produira le résultat correct.
Sinon, vous pouvez détourner le ruby
interprète (et probablement ceux d'autres langues)
ruby -e "puts Dir.glob('**/*.rb')"
Merci à Chris et Gaius pour vos réponses.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow