From: Stefano Crocco Date: 2007-03-27T06:42:05+09:00 Subject: Re: Find.find() doesn't work with broken symlinks Alle luned� 26 marzo 2007, robertlaferla@comcast.net ha scritto: > Find.find() seems to filter out broken symlinks. I was hoping to use it to > get a recursive list of files in directory so I could run various tests on > each file (like whether or not a symlink points to a valid file) > > What can I use instead of Find.find()? Is there a better way? > > def testsymlinks(srcpath) > Find.find(srcpath) do |path| > if File.symlink?(path) > begin > File.stat(path) > rescue Exception => e > $stderr.puts "The symlink " + path + " does not point to a > valid file. Please check that you have all your network volumes mounted." > exit(-1) > end > end > end > end Are you sure of this? I tried a small setup (made a directory, created a file and made a symlink to it, then removed the file) and it works. Find.find passes the broken symlink to the block and File.stat raises a SystemCall error (Errno::ENOENT). I'm running ruby 1.8.6 on gentoo linux. Stefano