You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用R高效获取MinIO指定存储桶子文件夹下的一级文件夹列表

用R高效获取MinIO指定文件夹的一级内容

核心方案:利用S3 API的前缀与分隔符参数实现精准扫描

MinIO兼容S3标准API,通过指定prefix和delimiter参数,可直接限定扫描目标路径的一级内容,无需全量拉取存储桶数据,从根源提升效率。R的minio.s3包原生支持这两个参数。

具体实现代码

1. 配置MinIO连接

library(minio.s3)

# 设置MinIO连接环境变量
Sys.setenv(
  AWS_ACCESS_KEY_ID = "你的MinIO访问密钥",
  AWS_SECRET_ACCESS_KEY = "你的MinIO秘密密钥",
  AWS_S3_ENDPOINT = "http://你的MinIO地址:端口",
  AWS_REGION = "us-east-1", # MinIO默认区域,可按需修改
  AWS_S3_FORCE_PATH_STYLE = TRUE # 必须开启路径模式适配MinIO
)

2. 获取指定文件夹的一级子文件夹列表

以获取test_bucket中folder_2/下的一级子文件夹为例:

# 调用get_bucket获取目标路径的一级内容
bucket_response <- get_bucket(
  bucket = "test_bucket",
  prefix = "folder_2/", # 限定扫描起始路径
  delimiter = "/"       # 按斜杠分割路径,仅返回一级子项
)

# 提取并整理一级文件夹名称
sub_folders <- sapply(bucket_response$commonPrefixes, function(item) {
  gsub("folder_2/", "", item$prefix) # 去掉前缀,保留纯文件夹名
})

# 输出结果
print(sub_folders)

如果习惯用数据框格式处理,可改用get_bucket_df:

bucket_df <- get_bucket_df(
  bucket = "test_bucket",
  prefix = "folder_2/",
  delimiter = "/"
)

# 筛选出文件夹条目并提取名称
sub_folders_df <- bucket_df[!is.na(bucket_df$common_prefix), ]
sub_folders <- gsub("folder_2/", "", sub_folders_df$common_prefix)

print(sub_folders)

原理说明

  • prefix:告诉MinIO仅扫描以该前缀开头的对象,避免全桶遍历。
  • delimiter:指定路径分隔符后,MinIO会将匹配前缀且下一个分隔符前的路径作为commonPrefixes返回,即目标路径的一级子文件夹,不会递归扫描子文件夹内部内容。

内容的提问来源于stack exchange,提问作者tomsu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 22:29:53