如何用list.files批量访问指定层级结构的目标文件夹文件?
批量获取指定层级结构中的.nc文件解决方案
问题分析
你需要从大量层级复杂的文件夹中,精准提取路径包含class.a→subclass.b→gotit这三层结构的.nc文件,原list.files的通配符写法错误,导致无法正确匹配。
可行方案
方案1:正则表达式+递归遍历
利用list.files的递归遍历能力,结合正则表达式精准匹配路径结构:
files <- list.files( path = "D:/local data/test", pattern = "^.+class\\.a/.+subclass\\.b/.+gotit/.+\\.nc$", full.names = TRUE, recursive = TRUE )
- 正则说明:
^.+class\.a匹配class.a之前的任意层级,.+subclass\.b匹配两者之间的任意层级,.+gotit/.+\.nc$确保最后是gotit目录下的.nc文件;注意正则中.是特殊字符,需转义为\.。
方案2:Sys.glob通配符匹配(更直观)
用Sys.glob的**通配符匹配任意深度子目录,写法简洁易懂:
files <- Sys.glob("D:/local data/test/**/class.a/**/subclass.b/**/gotit/*.nc")
- 通配符说明:
**代表任意层数的子文件夹,不管class.a前后有多少无关目录,只要路径按顺序包含指定三层结构,就能匹配到目标.nc文件。
注意事项
- 处理数千个文件时,两种方案效率都能满足需求,
Sys.glob在Windows环境下对长路径支持更友好。 - 可通过
length(files)查看匹配数量,用head(files)抽样验证路径正确性。
内容的提问来源于stack exchange,提问作者sbg
相关产品推荐
相关产品推荐

