On Dec 6, 10:54 pm, MonkeeSage <MonkeeS... / gmail.com> wrote:
> On Dec 6, 9:20 pm, "ara.t.howard" <ara.t.how... / gmail.com> wrote:
>
> > On Dec 6, 2007, at 7:05 PM, MonkeeSage wrote:
>
> > > Ps. Your gemspec needs a dependency on main.
>
> > ooooops.  thanks!
>
> > a @http://codeforpeople.com/
> > --
> > we can deny everything, except that we have the possibility of being
> > better. simply reflect on that.
> > h.h. the 14th dalai lama
>
> NP. I really like this package, BTW. :)
>
> A problem I just ran into is dot-files (e.g., .tesfile). It looks like
> the glob pattern (constructued on line 115) is the problem. In a
> directory with .testfile, I get this output:
>
> $ ruby -w 'p Dir["./**/**"]'
> []
>
> $ ruby -e 'p Dir["./.*"]'
> ["..", ".testfile", "."]
>
> But adding a dot to the double star doesn't work correctly (i.e.,
> "./.**/**" get treated as "./../*", doh). I'm not sure there's any
> easy way to do it with Dir#glob.
>
> Regards,
> Jordan

Not sure what the difference in performance is with Find#fidn vs.
Dir#glob, but as a drop-in replacement...

--- search.old  2007-12-06 23:09:34.000000000 -0600
+++ search      2007-12-06 23:10:13.000000000 -0600
@@ -1,6 +1,7 @@
 #! /usr/bin/env ruby

 require 'main'
+require 'find'

 Main {
   description <<-txt
@@ -112,9 +113,8 @@
   end

   def each_entry_with_lines
-    glob = File.join param['Directory'].value, '**', '**'
     filters = build_filter_list
-    Dir.glob(glob) do |entry|
+    Find.find param['Directory'].value do |entry|
       next unless filters.match(entry)
       test ?f, entry or next
       lines = IO.readlines entry rescue next

Might I also suggest that you filter on the file's basename? One might
except...

search -F "^\." -a . "blah"

...to match all dot-files in ./ which contain "blah", but you actually
need something like this since you're running the filter against the
absolute path...

search -F ".*/*\." -a . "blah"

Regards,
Jordan