Kristof Bastiaensen wrote: > On Thu, 12 May 2005 13:33:25 +0200, Robert Klemme wrote: > >> <snip> >> Even more generic: >> >> module Find >> def self.find_cond(dir, cond) >> find(dir){|f| yield f if cond === f} >> end >> end >> >> Find::find_cond ".", /\.jsp$/ do |f| >> puts f >> end >> >> # and including the file type test >> proper_test = Object.new >> def proper_test.===(f) /\.jsp$/ =~ f and File.file? f end >> >> Find::find_cond ".", proper_test do |f| >> puts f >> end >> > > For this kind of thing I find the enumerator module very useful: > > require 'find' > require 'enumerator' > > Find.to_enum(:find, ".").grep(/\.jsp$/) > => #array of files that end with .jsp > > # or (to exclude directories): > Find.to_enum(:find, ".").select do |f| > /\.jsp$/ =~ f && File.file? f > end > > Cheers, > KB Ah, even better! /me makes mental note "should start using enumerator more". Thanks! robert