I'm using a good example to delete all file versions, delete markers and objects inside an Amazon S3 bucket and folder https://stackoverflow.com/a/53872419/387774
import boto3
bucket = "my-bucket-name"
filename = "my-folder/filename.xml"
client = boto3.client("s3")
paginator = client.get_paginator("list_object_versions")
response_iterator = paginator.paginate(Bucket=bucket)
for response in response_iterator:
versions = response.get("Versions", [])
versions.extend(response.get("DeleteMarkers", []))
for version_id in [
x["VersionId"]
for x in versions
if x["Key"] == filename and x["VersionId"] != "null"
]:
print("Deleting {} version {}".format(filename, version_id))
client.delete_object(Bucket=bucket, Key=filename, VersionId=version_id)
The problem I'm facing is there are thousands of files and their versions. I do not know the names of all those files. I would like to delete all of them using some wildcard like filename = "my-folder/*.xml"
What changes can I make?