2009/4/20 katari / gmail.com <katari / gmail.com>: > I am doing a batch run, where I have several .csv files with the same > name in different sub-directories. At the end of the batch run, I want > to cat all the individual files together, and load them into the > database. > > Here is the code: > Dir["**/store_need*"].each do |path| > ¨Βιξημείζιμείξπατθ®τοί Why do you convert a string to a string and then do string interpolation in the next line? > ¨Βιξημείζιμε Ζιμε®οπεξ¨Ά£ϋσιξημείζιμείξνύΆ¬ ΆςΆ© The string interpolation is superfluous plus you should rather use the block form of File.open. > ¨Βιξημείζιμε®εαγδο όμιξεό > ¨Βτοςείξεεδίζιμε ΌΌ μιξε Where do you open store_need_file? > ¨Βυτμιξε > ¨Βξδ > ¨Βιξημείζιμε®γμοσε > end > > I am recursively looking for the store_need.csv files, and then > reading them into a single store_need_file. The problem is that this > code is not reading the file at all. I can see that the path is > defined correctly. This is a shorter variant if your individual CSV files are small: File.open "load.csv", "w" do |io| Dir["**/store_need*"].each do |path| # note: puts instead of write to get the terminating newline io.puts(File.read(path)) end end If your individual files are large I would probably not bother to combine them. If you still want to do it then I would do something like this # untested NL = "\r\n".freeze BL = 1024 File.open "load.csv", "wb" do |fout| buffer = "" Dir["**/store_need*"].each do |path| File.open path, "rb" do |fin| while fin.read(BL, buffer) fout.write(buffer) end end # only needed if files are not terminated properly: # fout.write(NL) end end Cheers robert -- remember.guy do |as, often| as.you_can - without end http://blog.rubybestpractices.com/