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

如何用R批量修改文件名前缀并为特定模式文件添加后缀b?

用R批量重命名文件的解决方案

核心逻辑

  • 按原始前缀(比如sdr5569)分组,给每组分配唯一的随机新前缀
  • 同一组里,带bcd后缀的文件,新前缀后额外加个b
  • 先预览重命名计划,确认无误再执行实际操作

完整代码实现

# 替换成你的文件所在目录路径
target_dir <- "你的目录路径"

# 筛选出符合原始命名规则的文件
files <- list.files(target_dir, pattern = "^sdr\\d+-[ab]cd-trix\\.txt$", full.names = TRUE)

# 提取原始前缀并分组
file_prefixes <- sub("^(sdr\\d+)-.*", "\\1", basename(files))
prefix_groups <- split(files, file_prefixes)

# 生成每组对应的随机新前缀(asx+4位随机数)
set.seed(123) # 可选:固定随机种子,方便调试时结果一致
new_prefixes <- paste0("asx", sample(1000:9999, length(prefix_groups)))
names(new_prefixes) <- names(prefix_groups)

# 遍历分组处理重命名
for (prefix in names(prefix_groups)) {
  group_files <- prefix_groups[[prefix]]
  current_new_prefix <- new_prefixes[[prefix]]
  
  for (file in group_files) {
    file_name <- basename(file)
    # 判断文件是abc还是bcd后缀,生成对应新文件名
    if (grepl("-bcd-trix\\.txt$", file_name)) {
      new_name <- sub("^sdr\\d+-", paste0(current_new_prefix, "b-"), file_name)
    } else {
      new_name <- sub("^sdr\\d+-", paste0(current_new_prefix, "-"), file_name)
    }
    new_file_path <- file.path(target_dir, new_name)
    
    # 先打印预览,确认没问题再取消下面一行的注释执行重命名
    cat(sprintf("%s -> %s\n", file_name, new_name))
    # file.rename(file, new_file_path)
  }
}

关键说明

  • 目录配置:把target_dir替换成你的实际文件路径
  • 文件筛选:用正则精准匹配目标文件,避免误改其他无关文件
  • 分组关联:保证同一原始前缀的两个文件共用一个新前缀,不会打乱对应关系
  • 随机前缀:sample(1000:9999)生成4位随机数,想改位数直接调整数字范围就行
  • 安全机制:默认只打印重命名计划,确认无误后再取消file.rename的注释执行操作

注意事项

  • 操作前务必备份文件,防止意外出错
  • 确保R有目标目录的读写权限

内容的提问来源于stack exchange,提问作者i.b

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 10:02:49