如何用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
相关产品推荐
相关产品推荐

