2016-10-04 54 views
5

看起來很簡單,但沒有得到正確的語法。我想知道使用通配符在我的s3存儲桶中是否存在文件。像使用ls和通配符檢查s3中是否存在文件

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

東西的目的是看看是否一個名爲2016_myfile.txt或稱爲2011_myfile.csv文件這個桶中存在。

如果我運行該命令,即使我知道該文件存在,它也不會返回任何內容。

+0

非常低效,但爲什麼不做類似「aws s3 ls s3:// my-bucket/folder/| grep myfile」? 也就是說,如果你堅持使用CLI。使用Boto的python腳本會更有效率,但它不是單行命令。 –

+0

@GilAdirim其實這也會起作用。我只是感到驚訝,aws-cli沒有提供這樣的東西,並認爲我錯過了什麼 – Nicros

+0

@GilAdirim我一直在看Boto,我也沒有看到它如何支持通配符,你有沒有一個指針可以提供? –

回答

6

(從評論重新起草的,因爲它出現這個回答了這個問題)

我自己試過了,沒能在AWS-CLI使用通配符,並根據docs,目前暫不支持。 簡單(雖然效率最低的)的解決辦法是使用grep:

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

或者,你可以寫一個簡短的Python /其他腳本來做到這一點更有效(但不是在一個命令)

+0

我覺得這個效果不錯。謝謝! – Nicros

0

s3cmd grep也適用於我。

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

S3不支持通配符列表。你需要列出所有的文件並grep它。

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

上面的命令會給出文件夾下的文件列表,它也會搜索文件夾中的文件。只需用grep你的文件名

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

假設,如果你想找到多個文件,創建這些的正則表達式和grep它。

相關問題