如何使用R代码按文件夹名及序号规则批量重命名多文件夹内图片
R批量重命名图片实现代码
重要提示:运行代码前务必备份全部原始文件,避免操作失误导致文件丢失
实现逻辑
遍历根目录下所有命名符合E+数字格式的文件夹(即E1至E1000文件夹),过滤文件夹内的图片文件,按顺序生成J_文件夹名_序列序号.原后缀格式的新文件名后执行重命名。
完整可运行代码
# 配置参数 # 替换为你存放E1-E1000所有文件夹的根目录路径 root_dir <- "C:/your/root/path/here" # 可识别的图片格式后缀,按需增删即可 pic_ext <- c("jpg", "jpeg", "png", "bmp", "tiff", "gif") # 提取所有符合命名规则的目标文件夹 all_subdirs <- list.dirs(root_dir, recursive = FALSE, full.names = TRUE) target_dirs <- all_subdirs[grepl("^E\\d+$", basename(all_subdirs))] # 遍历处理每个文件夹 for (dir in target_dirs) { current_folder <- basename(dir) # 读取文件夹内所有文件 all_files <- list.files(dir, full.names = TRUE) # 过滤出图片文件(忽略后缀大小写) is_pic <- grepl( paste0("\\.(", paste(pic_ext, collapse = "|"), ")$"), all_files, ignore.case = TRUE ) pic_list <- all_files[is_pic] # 可选:调整图片排序规则,默认按系统读取顺序排序 # 按文件修改时间排序(从早到晚):取消下行注释即可 # pic_list <- pic_list[order(file.mtime(pic_list))] # 按原文件名字母数字排序:取消下行注释即可 # pic_list <- pic_list[order(basename(pic_list))] # 执行重命名 for (idx in seq_along(pic_list)) { old_file <- pic_list[idx] # 保留原始文件后缀 old_ext <- tools::file_ext(old_file) new_file_name <- paste0("J_", current_folder, "_", idx, ".", old_ext) new_file <- file.path(dir, new_file_name) file.rename(old_file, new_file) } message(paste0("文件夹", current_folder, "处理完成,共重命名", length(pic_list), "张图片")) }
使用说明
- 将代码中
root_dir的取值替换为你本地存放E1-E1000文件夹的实际路径,Windows系统路径注意将反斜杠\替换为正斜杠/ - 首次运行建议先复制2-3个测试文件夹到单独的测试目录,修改
root_dir指向测试目录试跑,确认命名结果符合预期后再处理全量文件 - 如果需要序号固定长度(比如3位长度,1显示为001),可以将生成新文件名的代码替换为
new_file_name <- paste0("J_", current_folder, "_", sprintf("%03d", idx), ".", old_ext)
代码默认不会处理文件夹内的非图片文件,也不会修改子文件夹内的内容,不会跨目录移动文件。
内容的提问来源于stack exchange,提问作者Jives Tan
相关产品推荐
相关产品推荐

