-----Original Message-----
From: Robert Klemme [mailto:shortcutter / googlemail.com] 
Sent: Monday, August 27, 2007 9:01 AM
To: ruby-talk ML
Subject: Re: Dir, recursive filescan

> files = Dir["E:/test/foobar/scripts/**/*.xml"]
> matches = files.inject(0) {|sum,f| sum +
File.read(f).scan('<if>').size}
> printf "%10d matches\n%10d files\n", matches, files.size
>
> If you have a lot of files it may pay off to use Find.find instead of
> Dir[].
> */
>
> thanks, works like a charm :-)
> Never used  the inject method until now, i'm still on newbie level.

/*
Took me a while, too. But if you get the hang of it you'll see it's a
really cool utility.  At one point I rewrote all the Enumerable
methods via #inject just for the learning experience. :-)
*/

one thing i noticed when using Dir[...] on large dirtrees i.e. C:/ruby
i get a Permission denied =

filescan.rb:21:in `read': Permission denied - C:/ruby/doc/Expat-1.95.8
(Errno::EACCES)

I think that's the reason you mentioned to use Find.find yor large
dirtrees ?!

Regards, Gilbert