R语言如何筛选指定job编号目录下符合命名规则的.tif文件
解决方案
你可以使用grepl()函数做正则匹配过滤现有文件列表,也可以直接遍历指定job目录提升搜索效率,两种实现方式如下:
方式1:过滤已获取的文件列表
这种方法适配你现有的代码逻辑,只需要新增两步过滤操作即可:
# 你的原有代码 Year <- 2021 Path_source <- "C:/Files/" file.ls <- list.files(path=Path_source, pattern=paste0("Text_",Year,".*\\.tif"),all.files = TRUE, full.names = TRUE, recursive = TRUE) # 新增过滤逻辑 jobs <- c(1,14,45,67,129,834) # 构造job目录匹配规则,末尾加/避免短编号误匹配(比如job1不会匹配到job14) job_match_pattern <- paste0("/job(", paste(jobs, collapse = "|"), ")/") # 过滤得到目标文件 file.ls_filtered <- file.ls[grepl(job_match_pattern, file.ls)]
方式2:直接遍历指定job目录(效率更高)
如果你的目标job数量远小于总job数,直接只搜索目标job目录可以避免遍历全部1000个job文件夹,速度更快:
Year <- 2021 Path_source <- "C:/Files/" jobs <- c(1,14,45,67,129,834) # 构造所有目标job的完整路径 target_job_paths <- file.path(Path_source, paste0("job", jobs)) # 遍历每个目标job目录搜索符合规则的tif文件 file.ls_filtered <- unlist(lapply(target_job_paths, function(job_path) { list.files(path = job_path, pattern = paste0("Text_",Year,".*\\.tif"), all.files = TRUE, full.names = TRUE, recursive = TRUE) }))
两种方式最终得到的file.ls_filtered就是你需要的结果。
内容的提问来源于stack exchange,提问作者MIH
相关产品推荐
相关产品推荐

