ara.t.howard / noaa.gov wrote: > On Mon, 16 Oct 2006, Daniel Berger wrote: > >> lroland / gmail.com wrote: >>> Hi all >>> >>> I browsed through the FileUtils and Dir documentation and found no >>> obvious way to test if a directory exists and is empty. Various hacks >>> can be used (like checking file count and size, testing if the >>> directory can be deleted..) but they all left me wondering if i some >>> how missed a Dir.isEmpty? like method ? >>> >>> So in short is there a real Ruby way of telling whether a directory if >>> empty >> >> if Dir["/foo/bar/*"].empty? > > that'll crawl if a directory is huge though... i've used this > > > d = "the_dir" > > empty = > catch("empty"){ > Dir.glob("#{ d }/*"){ throw "empty", false } # if we find any > file return false > Dir.glob("#{ d }/.*"){ throw "empty", false } # if we find any > dotfile/hidden return false > throw "empty", true # otherwise return true > } > > which someone will probably compact... note that it returns false when the > first file/dotfile is found. > > cheers. > > -a Not sure about using throw to return values there... Also, won't the "Dir.glob("#{ d }/.*")" return [".", ".."] (well, pass "." to the block) and break this? How about: def isEmpty?(dir) Dir.glob("#{dir}/*", File::FNM_DOTMATCH) do |f| return false unless f =~ /\.\.?/ end return true end