Forum: Ruby Directory lstat mass listing

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Michael L. (Guest)
on 2007-08-03 01:06
Been trying to get a full list of file sizes out of a directory
structure, starting from '/' ... The code below wont work because the
method doesnt accept wildcards, and instead gives the size of the
directory block rather than the file sizes within it.

Dir.chdir('/')

File.size("**/**").each {|x| puts x}


and the problem with File.size("/.") is that it list the size of the
directory
block size '4096'

i was thinking that somehow i could run a directory surf with the
Find.find method
 --- Find.find("/", "./") {|path| puts path} ---
and shove that data into an array, then run File.size on each array item
with a range... anyone have any ideas?
-Thanks
Matt W. (Guest)
on 2007-08-03 01:41
(Received via mailing list)
On Aug 2, 3:06 pm, Jon H. <removed_email_address@domain.invalid> wrote:
> directory
> block size '4096'
>
> i was thinking that somehow i could run a directory surf with the
> Find.find method
>  --- Find.find("/", "./") {|path| puts path} ---
> and shove that data into an array, then run File.size on each array item
> with a range... anyone have any ideas?
> -Thanks
> --
> Posted viahttp://www.ruby-forum.com/.

Here's some code to help get you further:

def crawl(current_dir)
  Dir.entries(current_dir).each do |entry|
    if File.directory?(entry)
      crawl(entry)
    else
      puts File.size(entry)
    end
  end
end

Note that this code cut-and-pasted will not work. For example, make
sure you don't visit "." and ".." or you will be in an infinite loop.
Ask again if you still need more assistance.

Matt W.
Raf C. (Guest)
on 2007-08-03 01:42
(Received via mailing list)
2007/8/2, Jon H. <removed_email_address@domain.invalid>:
>
> --
> Posted via http://www.ruby-forum.com/.
>
>
I can suggest this:

Dir.glob( "**/*").each{ |f| puts File.size( f) if File.file?( f)}


Regards,
Raf
This topic is locked and can not be replied to.