私はpythonやbotoを知らないので、これは不完全な答えになるでしょうが、質問の根底にある概念についてコメントしたいと思います。
他のポスターの 1 つは正しかった: S3 にはディレクトリの概念はありません。フラットなキーと値のペアのみがあります。多くのアプリケーションは、特定の区切り文字がディレクトリ エントリを示すふりをします。たとえば、「/」または「\」。一部のアプリでは、「ディレクトリ」が空になった場合でもリストの結果に表示されるように、ダミー ファイルを配置するところまで行っています。
常にバケット全体を取得して、ローカルでフィルタリングを行う必要はありません。S3 には区切りリストの概念があり、パス区切り文字 (「/」、「\」、「|」、「foobar」など) と見なすものを指定すると、S3 は仮想結果を返します。欲しいです。
http://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketGET.html (区切りヘッダーを見てください。)
この API は、1 レベルのディレクトリを取得します。あなたの例にあった場合:
mybucket/files/pdf/abc.pdf
mybucket/files/pdf/abc2.pdf
mybucket/files/pdf/abc3.pdf
mybucket/files/pdf/abc4.pdf
mybucket/files/pdf/new/
mybucket/files/pdf/new/abc.pdf
mybucket/files/pdf/2011/
そして、接頭辞 "" と区切り文字 "/" を含む LIST を渡すと、結果が得られます。
mybucket/files/
プレフィックス「mybucket/files/」とデリミタ「/」を使用して LIST を渡すと、結果が得られます。
mybucket/files/pdf/
また、プレフィックス「mybucket/files/pdf/」とデリミタ「/」を使用して LIST を渡すと、結果が得られます。
mybucket/files/pdf/abc.pdf
mybucket/files/pdf/abc2.pdf
mybucket/files/pdf/abc3.pdf
mybucket/files/pdf/abc4.pdf
mybucket/files/pdf/new/
mybucket/files/pdf/2011/
結果セットから pdf ファイル自体を削除したい場合は、その時点で自分で行う必要があります。
python/boto でこれを行う方法はわかりません。うまくいけば、通過する方法があります。