使用R语言file.copy复制相机陷阱图片时的目录与同名文件问题
相机陷阱图片筛选复制问题修复方案
问题原因
你当前的R代码直接将所有图片复制到目标根目录E:/,导致:
- 同名文件被自动覆盖,最终仅保留一份
- 未保留原有的季节、站点等多层目录结构
- 批量复制时因路径冲突,部分文件未成功复制
修复方案
需要为每个图片构建与源路径一致的目标目录结构,确保每个文件都被复制到对应子文件夹中,避免同名冲突。具体代码如下:
# 读取筛选后的图片路径CSV文件 tagged_img <- read.csv(file.path(dir, "images_filtered.csv"), header = TRUE, sep = ";") file_paths <- tagged_img$file_path # 定义目标根目录 target_root <- "E:/" # 遍历处理每个图片文件 for (fp in file_paths) { # 提取源路径中驱动器后的相对路径,保留原目录结构 relative_path <- sub("^[A-Za-z]:/", "", fp) # 构建完整的目标文件路径 target_path <- file.path(target_root, relative_path) # 创建目标文件所在的目录(如果不存在) target_dir <- dirname(target_path) if (!dir.exists(target_dir)) { dir.create(target_dir, recursive = TRUE) } # 复制文件,保留原文件日期,禁止覆盖(若需覆盖可将overwrite设为TRUE) file.copy(from = fp, to = target_path, copy.date = TRUE, overwrite = FALSE) }
关键说明
- 保留目录结构:通过
sub提取源路径的相对部分,拼接目标根目录,确保目标路径与源路径的子文件夹结构完全一致 - 避免同名冲突:每个文件的目标路径因子文件夹不同而唯一,不会出现同名覆盖问题
- 确保全量复制:循环逐个处理每个文件,同时提前创建目标目录,避免因目录不存在导致的复制失败
内容的提问来源于stack exchange,提问作者Pablo Quiles
相关产品推荐
相关产品推荐

