Skip to content

Instantly share code, notes, and snippets.

@amitsaxena
Last active December 15, 2015 05:29
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 amitsaxena/5209033 to your computer and use it in GitHub Desktop.
Save amitsaxena/5209033 to your computer and use it in GitHub Desktop.
Get a recursive listing of all files at at a given Amazon S3 path
credentials = YAML.load_file("#{Rails.root}/config/s3.yml")
@access_key = credentials[Rails.env]["access_key_id"]
@secret_key = credentials[Rails.env]["secret_access_key"]
@bucket = credentials[Rails.env]["bucket"]
AWS.config(
:access_key_id => @access_key,
:secret_access_key => @secret_key
)
@s3 = AWS::S3.new
def self.get_all_files_at_a_path(bucket, path)
tree = @s3.buckets[bucket].as_tree(:prefix => path)
directories = tree.children.select(&:branch?).collect(&:prefix)
files = tree.children.select(&:leaf?).collect(&:key)
while directories.size > 0
dir = directories.pop
files = files + @s3.buckets[bucket].as_tree(:prefix => dir).children.select(&:leaf?).collect(&:key)
directories = directories + @s3.buckets[bucket].as_tree(:prefix => dir).children.select(&:branch?).collect(&:prefix)
end
return files
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment