From: Morton Goldberg Date: 2007-03-10T16:44:57+09:00 Subject: Re: Find.find --- returns directories/files backwards On Mar 9, 2007, at 7:35 PM, Brad wrote: > New user question: > > It seems to me when I run: > Find.find('/user/name/documents') {|path| puts path} > > it returns all the directories in the reverse order. I was expecting > the directories to be returned in alphabetical order, but that doesn't > seem to be the case. Also, in one case it reads half of a directory's > files, then the sub dirs and then it finished reading the rest of the > directory it started in and finished writing them in the Puts > statement. > > Am I missing something? How do you do get it to write out the > directories in alphabetical order? > > Any and all help welcome. That's just the way Fine.find works. My experience is that, for most applications, the order in which Find.find traverses directories doesn't cause problems. But it may not be the best way to get a deep list of the contents of a directory. Two alternatives you might try are BASE = '/Users/mg/Downloads' paths = [] Find.find(BASE) { |path| paths << path } puts paths.reverse or Dir.glob("#{BASE}/**/*") { |path| puts path } Note: this form of Dir.glob doesn't find dotted (hidden) files and Fine.find does (there is a flag you can set to get dotted files with Dir.glob). Regards, Morton