2009-12-30 11 views
2

Je veux récupérer une liste de tous les fichiers sous un répertoire particulier. Dir.glob fonctionne très bien, mais il ne semble pas y avoir de moyen de limiter les résultats aux seuls fichiers (à l'exclusion des répertoires).trouver. -type f dans ruby ​​

est Heres ce que j'ai en ce moment:

files = Dir.glob('my_dir/**/*').reject { |f| File.directory?(f) } 

est-il un moyen d'accomplir plus élégant cela?

Répondre

2

C'est en fait un moyen assez efficace pour aller à le faire, mais vous pouvez également utiliser le module Recherche:

require 'find' 

found = [ ] 

Find.find(base_path) do |path| 
    found << path if (File.file?(path)) 
end 
+0

+1: J'oublie toujours de la bibliothèque 'find', mais il est en effet le plus efficace (en termes de temps de programmation, de toute façon) façon de porter une expression POSIX 'find' à Ruby. –