(Re-)generates the cache buster values for all files with the specified
    prefixes.

def cache_busting_scan(*prefixes):
    """
    (Re-)generates the cache buster values for all files with the specified
    prefixes.
    """

    redis = oz.redis.create_connection()
    pipe = redis.pipeline()

    # Get all items that match any of the patterns. Put it in a set to
    # prevent duplicates.
    if oz.settings["s3_bucket"]:
        bucket = oz.aws_cdn.get_bucket()
        matches = set([oz.aws_cdn.S3File(key) for prefix in prefixes for key in bucket.list(prefix)])
    else:
        matches = set([])
        static_path = oz.settings["static_path"]
        
        for root, _, filenames in os.walk(static_path):
            for filename in filenames:
                path = os.path.relpath(os.path.join(root, filename), static_path)

                for prefix in prefixes:
                    if path.startswith(prefix):
                        matches.add(oz.aws_cdn.LocalFile(static_path, path))
                        break

    # Set the cache busters
    for f in matches:
        file_hash = f.hash()
        print(file_hash, f.path())
        oz.aws_cdn.set_cache_buster(pipe, f.path(), file_hash)

    pipe.execute()