From: T.w.oliver on 10 Nov 2009 00:47 Hi all, Got a bit of a problem I dont know how to go about. Basically my script takes 2 different directories, puts each file/sub directory into an array for each, sorts the array, compares them, and then spits out what is missing from each directory. Im really happy with this as it is my first real ruby script and it works a charm. Now I was wanting to add to it. Basically I want to take the size of each file and see if they are greater than 0, and if it is 0 then output the file. My problem is that a directory is returned as being of size 0. Obviously I dont care about the directory size in this case, only the file size. How can i write my script to that it ignores the directory and only checks if it is a file. So at the moment my code goes Dir.chdir(old) old_array = Array.new for i in Dir['**/**'] #puts i puts i puts File.size(i) old_array << i end The puts File.size(i) is there for a semi test, and it shows me that directories are returned with size 0. Any thoughts? Thanks so much :D -- Posted via http://www.ruby-forum.com/.
From: Sven Schott on 10 Nov 2009 01:01 [Note: parts of this message were removed to make it a legal post.] Maybe something like: puts File.size(i) unless File.directory?(i) On Tue, Nov 10, 2009 at 4:47 PM, T.w.oliver(a)gmail.com Tom < t.w.oliver(a)gmail.com> wrote: > Hi all, > Got a bit of a problem I dont know how to go about. > Basically my script takes 2 different directories, puts each file/sub > directory into an array for each, sorts the array, compares them, and > then spits out what is missing from each directory. Im really happy with > this as it is my first real ruby script and it works a charm. > > Now I was wanting to add to it. Basically I want to take the size of > each file and see if they are greater than 0, and if it is 0 then output > the file. > > My problem is that a directory is returned as being of size 0. Obviously > I dont care about the directory size in this case, only the file size. > How can i write my script to that it ignores the directory and only > checks if it is a file. > > So at the moment my code goes > Dir.chdir(old) > old_array = Array.new > for i in Dir['**/**'] > #puts i > puts i > puts File.size(i) > old_array << i > end > > The puts File.size(i) is there for a semi test, and it shows me that > directories are returned with size 0. > > Any thoughts? > > Thanks so much :D > -- > Posted via http://www.ruby-forum.com/. > >
From: Tom Tom on 10 Nov 2009 01:04 Sven Schott wrote: > Maybe something like: > > puts File.size(i) unless File.directory?(i) > > On Tue, Nov 10, 2009 at 4:47 PM, T.w.oliver(a)gmail.com Tom < I completely missed the directory method haha. Thank you sir. -- Posted via http://www.ruby-forum.com/.
From: Robert Klemme on 11 Nov 2009 04:42 2009/11/10 Tom Tom <t.w.oliver(a)gmail.com>: > Sven Schott wrote: >> Maybe something like: >> >> puts File.size(i) unless File.directory?(i) >> >> On Tue, Nov 10, 2009 at 4:47 PM, T.w.oliver(a)gmail.com Tom < > > I completely missed the directory method haha. Thank you sir. There is also the not so well known method "test" which can be used for this: old_array = Dir["#{old}/**/*"] old_array.each do |f| puts File.size(f) unless test ?d, f end Btw, the original code copied the result of Dir[] into another Array. That seems unnecessary additional work. You can directly use the result of Dir[]. Kind regards robert -- remember.guy do |as, often| as.you_can - without end http://blog.rubybestpractices.com/
|
Pages: 1 Prev: errors when using sqlite3's query and prepare methods Next: Active_Ldap Base Config Question |