如何在R中按文件名规则复制TIF文件到指定目录并重命名?
批量整理TIF文件到指定目录的R实现
核心思路
遍历ntl下的每个城市子文件夹,提取每个TIF文件名中的年份和月份信息,将文件复制到tst对应城市的年份/月份子目录下,并统一重命名为ntl.tif。
实现代码
# 1. 定义根路径(请替换为你的实际文件夹路径) ntl_root <- "D:/your_path/ntl" tst_root <- "D:/your_path/tst" # 2. 获取所有城市名称 cities <- dir(ntl_root, full.names = FALSE) # 3. 遍历每个城市 for (city in cities) { # 获取当前城市下的所有TIF文件 tif_files <- dir(file.path(ntl_root, city), pattern = "\\.tif$", full.names = TRUE) # 遍历每个TIF文件 for (tif_file in tif_files) { # 提取文件名中的年份和月份 file_basename <- basename(tif_file) year <- sub("t(\\d{4})_\\d{2}\\.tif", "\\1", file_basename) month <- sub("t\\d{4}_(\\d{2})\\.tif", "\\1", file_basename) # 构造目标文件路径 target_dir <- file.path(tst_root, city, year, month) target_file <- file.path(target_dir, "ntl.tif") # 复制并重命名文件(overwrite=TRUE表示覆盖已存在的ntl.tif) file.copy(tif_file, target_file, overwrite = TRUE) # 可选:打印处理进度 cat("已处理:", tif_file, "->", target_file, "\n") } } cat("所有文件处理完成!")
注意事项
- 请确保替换代码中的
ntl_root和tst_root为你本地的实际文件夹路径,Windows路径可以用正斜杠/或者双反斜杠\\。 - 代码默认允许覆盖目标目录中已存在的
ntl.tif,如果不需要覆盖,将file.copy中的overwrite参数改为FALSE。 - 若
tst目录结构存在缺失(比如某城市的某年份/月份目录未创建),可以在构造target_dir后添加dir.create(target_dir, recursive = TRUE)来自动创建目录。
内容的提问来源于stack exchange,提问作者Nikos
相关产品推荐
相关产品推荐

