You need to enable JavaScript to run this app. R中使用Glob模式从多级目录提取符合规则的txt文本文件
优惠活动
大模型
产品
解决方案
定价
更多

R中使用Glob模式从多级目录提取符合规则的txt文本文件

问题根因
  • 你当前代码中的invert = TRUE参数会返回不符合glob规则的文件,和你的需求完全相反,是导致返回所有文件的核心原因,需要优先删除。
  • fs::dir_ls默认的glob匹配仅针对文件名部分,不会匹配多级路径结构,所以你写的包含多段目录的glob规则不会生效。
修复方案

方法1:调整fs::dir_ls参数(推荐)

添加glob_type = "path"参数,让glob规则匹配完整的相对路径,即可命中多级目录下的目标文件:

# 匹配符合规则的所有txt文件路径
target_files <- fs::dir_ls(
  path = "M:/instrument/project/",
  glob = "experiment_*/2021-04-11*/raw_data/files*.txt",
  recurse = TRUE,
  glob_type = "path"
)

# 直接用vroom批量读取所有文件
library(vroom)
result_df <- vroom(target_files, id = "file_path") # id参数会新增一列记录文件来源路径

方法2:使用基础R list.files的正则匹配

如果不想依赖fs包的参数,可以用正则模式实现相同效果:

target_files <- list.files(
  path = "M:/instrument/project/",
  pattern = "^experiment_.*[\\\\/]2021-04-11.*[\\\\/]raw_data[\\\\/]files.*\\.txt$",
  recursive = TRUE,
  full.names = TRUE
)

注:正则中的[\\\\/]是为了兼容Windows和Unix系统的路径分隔符。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.21 11:45:07