Forum: Ruby Loop through files in a directory

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Ben J. (Guest)
on 2007-05-05 00:40
I know this is a nub question, but the documentation on ruby is
terrible.

How do I loop through all of the files in a directory?

Thanks for your help.
Jano S. (Guest)
on 2007-05-05 00:48
(Received via mailing list)
On 5/4/07, Ben J. <removed_email_address@domain.invalid> wrote:
> I know this is a nub question, but the documentation on ruby is
> terrible.
>
> How do I loop through all of the files in a directory?
>
> Thanks for your help.
>
> --
> Posted via http://www.ruby-forum.com/.

Have a look at Find.find and Dir.each.
unknown (Guest)
on 2007-05-05 01:51
(Received via mailing list)
On Sat, 5 May 2007, Ben J. wrote:

> I know this is a nub question, but the documentation on ruby is
> terrible.
>
> How do I loop through all of the files in a directory?
>
> Thanks for your help.
>
> --
> Posted via http://www.ruby-forum.com/.
>


   harp:~ > ls dir
   a  b  c


   harp:~ > cat a.rb
   class Dir
     def self.ls dir, glob = File.join('**', '**'), &block
       ret = [] unless block
       Dir.glob(File.join(dir, glob)) do |entry|
         block ? block.call(entry) : ret.push(entry)
       end
       ret
     end
   end

   Dir.ls 'dir' do |entry|
     puts entry
   end

   entries = Dir.ls 'dir'
   p entries


   harp:~ > ruby a.rb
   dir/a
   dir/b
   dir/c
   ["dir/a", "dir/b", "dir/c"]

-a
Mike S. (Guest)
on 2007-05-05 03:01
(Received via mailing list)
def GetRecursiveFileList ( dirname )
    results = Array.new
    # both methods should work the same (I think one returns the
directory
names in addition to the files)
    use_method = 0
    if use_method == 0
        Dir["#{dirname}/**/**"].each do | thisfile |
            thisfile.gsub! ( /\// , '\\' )
            results.push ( thisfile )
        end
    else
        require 'find'
        Find.find ( dirname ) do | thisfile |
            thisfile.gsub! ( /\// , '\\' )
            results.push ( thisfile )
        end
    end
    return results
end
This topic is locked and can not be replied to.