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

如何根据文件名向量用list.files()遍历子目录并复制文件?

问题原因

list.files()的pattern参数默认仅接受单个正则表达式字符串,当传入向量c("banana", "maca")时,它只会读取向量的第一个元素("banana")作为匹配规则,因此无法识别第二个子文件夹中的"maca"文件。

解决方案

将文件名向量转换为支持多关键词匹配的正则表达式(用|分隔表示“或”逻辑),同时开启full.names = TRUE参数获取文件完整路径,避免file.copy因路径问题失败。

修正后的代码如下:

# 文件名向量
test <- c("banana", "maca")

# 目录路径
from.dir <- "C:/Users/Windows 10/Documents/teste"
to.dir   <- "C:/Users/Windows 10/Documents/teste2"

# 把向量转为多匹配正则表达式
pattern_str <- paste(test, collapse = "|")

# 递归查找符合条件的文件(返回完整路径)
files    <- list.files(path = from.dir, pattern = pattern_str, recursive = TRUE, full.names = TRUE)

# 批量复制文件
for (f in files) {
  file.copy(from = f, to = to.dir)
}

额外说明

  • 如果需要精确匹配文件名(比如只匹配完全叫"banana"或"maca"的文件,而非包含这些字符串的文件),可以把正则表达式改为:
    pattern_str <- paste0("^", test, "$", collapse = "|")
    
    其中^表示字符串开头,$表示字符串结尾,确保完全匹配文件名。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 11:24:11