From: Ken Bloom Date: 2008-04-26T00:40:07+09:00 Subject: Re: Find.prune if ( filename[-5,5] != ".java") is odd? On Fri, 25 Apr 2008 07:28:42 -0500, Martin Elzen wrote: > Hi all. > > Today I had to do a recursive touch on all Java files in a certain > directory. Since I recently found that super cool ruby Find example I > figured I'd use that. However, my first try at a solution didn't work. > In the end I just changed the script a bit and now it does work as > intended, but... I really don't understand why the first version of the > example didn't work... It's the Ruby 1.8.6 1-click-installer version, > if that matters. > > > require "find" > > > Find.find( "c:/usd70.senior.2008.04.14.copy" ) do |filename| > Find.prune if filename == "." > Find.prune if (filename.size < 6) # shortest interesting filename == > "a.java" > > # first try, if I don't comment-out the following line it just does > not work as intended... #Find.prune if ( filename[-5,5] != ".java") # > string doesn't end with "java" ? #`touch #{filename}` > > > `touch #{filename}` if filename[-5,5] == ".java" > > end Find.prune is the wrong tool, period. Find.find will yield all of the subdirectory names as well, and running Find.prune on a subdirectory will prevent Find from descending into that subdirectory (thereby saving time and ignoring its contents). But Find.prune will *not* jump to the next iteration of the loop. It will continue to the end of the block before moving on to the next file. So I think you want next if ... instead. -- Ken (Chanoch) Bloom. PhD candidate. Linguistic Cognition Laboratory. Department of Computer Science. Illinois Institute of Technology. http://www.iit.edu/~kbloom1/