2016-10-04 31 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によると、これは現在サポートされていません。 最も簡単な(最も効率が)ソリューションはグレップを使用することです:

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します。

関連する問題