Est-il possible de créer un glob qui correspond aux fichiers du répertoire courant et de tous les sous-répertoires ?

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

  •  09-06-2019
  •  | 
  •  

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
Était-ce utile?

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
scroll top