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

使用tidyverse库在R中批量重命名文件的技术求助

使用tidyverse批量重命名图像文件

以下是基于tidyverse生态工具的解决方案,包含文件名解析、规则匹配和批量重命名的完整流程:

1. 加载所需包

我们需要用到tidyverse(处理字符串和数据框)和fs(更友好的文件操作):

library(tidyverse)
library(fs)

2. 获取目标文件并解析信息

首先定位到文件所在目录,获取所有符合原命名格式的.tif文件,同时提取文件名中的关键信息(原编号、通道):

# 设置文件所在目录(替换为你的实际路径)
target_dir <- "path/to/your/files"

# 获取所有符合格式的文件,并解析文件名
file_df <- dir_ls(target_dir, regexp = "^Snap-551-Image Export-(\\d{2})_c(\\d)_ORG\\.tif$") %>%
  tibble(file_path = .) %>%
  mutate(
    # 提取原编号(XX)和通道(cX中的数字)
    match_info = str_match(basename(file_path), "^Snap-551-Image Export-(\\d{2})_c(\\d)_ORG\\.tif$"),
    original_num = match_info[, 2],
    channel = match_info[, 3],
    # 将原编号转为数值,用于判断是否属于前20个文件
    original_num_numeric = as.integer(original_num)
  ) %>%
  select(-match_info) # 移除临时匹配列

3. 生成目标文件名

根据规则生成新文件名:前20个原编号(01-20)对应的文件使用样本编号001:

file_df <- file_df %>%
  mutate(
    sample_num = if_else(original_num_numeric <= 20, "001", "001"), # 若后续有其他样本编号规则可直接修改此处
    new_filename = paste0(sample_num, "_551_c", channel, "_AE2315_", original_num, ".tif"),
    new_file_path = path(target_dir, new_filename)
  )

4. 预览并执行重命名

先预览新旧文件名(确认无误再执行重命名)

print(file_df %>% select(file_path, new_file_path))

执行批量重命名

如果预览结果符合预期,运行以下代码完成重命名:

walk2(file_df$file_path, file_df$new_file_path, file_move)

关键说明

  • 正则表达式^Snap-551-Image Export-(\\d{2})_c(\\d)_ORG\\.tif$精准匹配原文件名格式,确保只处理目标文件
  • if_else语句控制样本编号规则,后续有其他编号需求可直接修改条件
  • walk2函数来自purrr(tidyverse核心组件),用于批量执行文件移动/重命名操作

内容的提问来源于stack exchange,提问作者Andreas Kaineder

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 09:09:59