Check if file exists in s3 using ls and wildcard

2019-03-25 09:56发布

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条回答
看我几分像从前
2楼-- · 2019-03-25 10:07

(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)

查看更多
forever°为你锁心
3楼-- · 2019-03-25 10:20

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楼-- · 2019-03-25 10:29

s3cmd also works for me with grep.

s3cmd ls --recursive s3://mybucket/folder/folder2 | grep filename
查看更多
登录 后发表回答