From: Robert Klemme Date: 2007-05-18T19:00:06+09:00 Subject: Re: Recursive directory listing On 18.05.2007 11:26, Peter Seebach wrote: > In message <464D6FED.8030701@exilregeringen.se>, Jesper writes: >> I read somewhere (online, not in the Pickaxe which is out of reach at >> the moment), that "**/*.mp3" would search through all levels, looking >> for *.mp3 files... but that doesn't seem to be the case. My (pig-ugly) >> code at the moment looks something like: > > It seems to me that this might be a feature of some *shells*, but > I've never seen it in Ruby. Then you've never used Dir[] or Dir.glob(). 11:51:25 [~]: ruby -e 'puts Dir["/usr/lib/**/*.{h,so}"]' /usr/lib/ruby/1.8/i386-cygwin/config.h /usr/lib/ruby/1.8/i386-cygwin/defines.h /usr/lib/ruby/1.8/i386-cygwin/dl.h /usr/lib/ruby/1.8/i386-cygwin/dlconfig.h /usr/lib/ruby/1.8/i386-cygwin/dln.h /usr/lib/ruby/1.8/i386-cygwin/env.h /usr/lib/ruby/1.8/i386-cygwin/intern.h /usr/lib/ruby/1.8/i386-cygwin/missing.h /usr/lib/ruby/1.8/i386-cygwin/node.h /usr/lib/ruby/1.8/i386-cygwin/re.h /usr/lib/ruby/1.8/i386-cygwin/regex.h /usr/lib/ruby/1.8/i386-cygwin/ruby.h /usr/lib/ruby/1.8/i386-cygwin/rubyio.h /usr/lib/ruby/1.8/i386-cygwin/rubysig.h /usr/lib/ruby/1.8/i386-cygwin/st.h /usr/lib/ruby/1.8/i386-cygwin/util.h /usr/lib/ruby/1.8/i386-cygwin/version.h /usr/lib/engines/lib4758cca.so /usr/lib/engines/libaep.so /usr/lib/engines/libatalla.so /usr/lib/engines/libchil.so /usr/lib/engines/libcswift.so /usr/lib/engines/libgmp.so /usr/lib/engines/libnuron.so /usr/lib/engines/libsureware.so /usr/lib/engines/libubsec.so /usr/lib/ruby/1.8/i386-cygwin/bigdecimal.so /usr/lib/ruby/1.8/i386-cygwin/curses.so /usr/lib/ruby/1.8/i386-cygwin/dbm.so /usr/lib/ruby/1.8/i386-cygwin/digest.so /usr/lib/ruby/1.8/i386-cygwin/dl.so /usr/lib/ruby/1.8/i386-cygwin/enumerator.so /usr/lib/ruby/1.8/i386-cygwin/etc.so /usr/lib/ruby/1.8/i386-cygwin/fcntl.so /usr/lib/ruby/1.8/i386-cygwin/gdbm.so /usr/lib/ruby/1.8/i386-cygwin/iconv.so /usr/lib/ruby/1.8/i386-cygwin/nkf.so /usr/lib/ruby/1.8/i386-cygwin/openssl.so /usr/lib/ruby/1.8/i386-cygwin/pty.so /usr/lib/ruby/1.8/i386-cygwin/readline.so /usr/lib/ruby/1.8/i386-cygwin/sdbm.so /usr/lib/ruby/1.8/i386-cygwin/socket.so /usr/lib/ruby/1.8/i386-cygwin/stringio.so /usr/lib/ruby/1.8/i386-cygwin/strscan.so /usr/lib/ruby/1.8/i386-cygwin/syck.so /usr/lib/ruby/1.8/i386-cygwin/syslog.so /usr/lib/ruby/1.8/i386-cygwin/tcltklib.so /usr/lib/ruby/1.8/i386-cygwin/tkutil.so /usr/lib/ruby/1.8/i386-cygwin/Win32API.so /usr/lib/ruby/1.8/i386-cygwin/win32ole.so /usr/lib/ruby/1.8/i386-cygwin/zlib.so /usr/lib/ruby/1.8/i386-cygwin/digest/md5.so /usr/lib/ruby/1.8/i386-cygwin/digest/rmd160.so /usr/lib/ruby/1.8/i386-cygwin/digest/sha1.so /usr/lib/ruby/1.8/i386-cygwin/digest/sha2.so /usr/lib/ruby/1.8/i386-cygwin/racc/cparse.so 11:51:34 [~]: >> It gets very bloated when I want to find many different extensions many >> (all) levels down, surely there is some better way to do this? Any hints >> of references would be appreciated. > > You will almost certainly have to actually write the code to list, look > for directories, change to them, and recurse. Yep, guess so. Documentation of Net::FTP does not mention path globbing like Dir[] does. Kind regards robert