Check if file exists in s3 using ls and wildcard

Seems so simple, but not getting the syntax right. I want to know if a file exists in my s3 bucket using wildcards. Something like

aws s3 ls s3://my-bucket/folder/*myfile* 

The goal is to see if a file called 2016_myfile.txt or a file called 2011_myfile.csv exists within this bucket.

If I run the command, it doesn't return anything even though I know this file exists there.

3

5 Answers

aws s3 ls does not support globs, but sync does and has a dry run mode. So if you do this (from an empty directory) you should get the results you want:

aws s3 sync s3://my-bucket . --exclude "*" --include "folder/*myfile*" --dryrun 

It will produce lines like this for matching files:

(dryrun) download s3://my-bucket/folder/myfile.txt to folder/myfile.txt (dryrun) download s3://my-bucket/folder/_myfile-foo.xml to folder/_myfile-foo.xml 
6

(re-drafted from comment as it appears this answered the question)

I myself tried, and failed to use wildcards in the aws-cli, and according to the docs, this is not currently supported. Simplest (though least efficient) solution would be to use grep:

aws s3 ls s3://my-bucket/folder/ | grep myfile 

Alternatively, you could write a short python/other script to do this more efficiently (but not in a single command)

2

S3 doesn't support wildcard listing. You need to list all the files and grep it.

aws s3 ls s3://mybucket/folder --recursive 

Above command will give the list of files under your folder, it searches the files inside the folder as well. Just grep your file name

aws s3 ls s3://mybucket/folder --recursive |grep filename 

Suppose if you want to find multiple files, create a regular expression of those and grep it.

4

For Windows User:

aws s3 ls s3://my-bucket/folder/ | findstr myfile 

2022 Update:

You can use this supported with aws s3 with the --dry-run option:

aws s3 sync s3://my-bucket . --include "folder/*myfile*" --exclude "*" --dryrun 

Alternatively,

s3cmd also works for me with grep.

s3cmd ls --recursive s3://mybucket/folder/folder2 | grep filename 

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

You Might Also Like