Skip to content

Instantly share code, notes, and snippets.

@mharris717
Created March 20, 2012 18:35
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mharris717/2139437 to your computer and use it in GitHub Desktop.
Save mharris717/2139437 to your computer and use it in GitHub Desktop.
Get files in dir of zips
require 'zip/zipfilesystem'
require 'net/ftp'
require 'csv'
def files_in_zip(filename)
Zip::ZipFile.open(filename) do |zip|
res = []
dirs = [""]
while dirs.size > 0
d = dirs.pop
begin
curr = zip.dir.entries(d).map { |x| [d,x].select { |x| x != '' }.join("/") }
res += curr
dirs += curr.reject { |x| x =~ /\./ }
res -= [d]
rescue => exp
puts exp.message
end
end
res
end
rescue => exp
puts exp.message
return ["ERRORED"]
end
CSV.open("output.csv","w") do |csv|
csv << ["Zip","File"]
files = Dir["**/*.zip"]
puts "Found #{files.size} zip files"
files.each do |f|
puts "Doing file #{f}"
res = files_in_zip(f)
res.each do |file|
csv << [f,file]
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment