あなたは、ブルートフォースを使用することができます。
List<String> matchingKeys = new ArrayList<>();
Predicate<String> predicate = Pattern.compile(".*/" + filename + "\\.\\w+").asPredicate();
for (ObjectListing listing = s3.listObjects(bucketName, "/");; listing = s3.listNextBatchOfObjects(listing)) {
listing.getObjectSummaries().stream()
.map(S3ObjectSummary::getKey)
.filter(predicate)
.forEach(matchingKeys::add);
if (!listing.isTruncated()) {
break;
}
}
代わりにヒットを集めるのは、あなただけ削除できます。
.forEach(key -> s3.deleteObject(bucketName, key));
注:これは、正規表現のsuを使用しています拡張子のないファイル名を指定してキーを見つけるというシナリオでは可能ですが、必要に応じて正規表現を調整できます。例えば、サブそのキーで任意の場所にを持っているすべてのキーを見つける正規表現を使用するように
".*" + substring ".*"
または大文字と小文字を区別しません
"(?i).*" + substring ".*"
など
免責事項:コードがないかもしれませんコンパイルしたり、私の電話機で親指で押されたように動作します(しかし、それはうまくいくでしょう)。
この質問をチェック:http://stackoverflow.com/questions/8027265/how-to-list-all-aws-s3-objects-in-a-bucket-using-java –