使用For Loop批量编辑文件:RStudio文件名重命名求助
批量重命名文件的R实现方案
核心思路
先获取目标文件夹内所有需要处理的文件路径,再通过循环对每个文件执行你已验证的文件名提取、修改逻辑,最后完成重命名。
完整代码
# 替换为你的目标文件夹路径 folder_path <- "/Users/cgill22/Desktop/GTEx_WGCNA_sex_combined_signed/" # 获取文件夹内所有.xls格式文件(需处理其他格式可修改pattern) file_paths <- list.files(path = folder_path, pattern = "\\.xls$", full.names = TRUE) # 批量处理每个文件 for (path in file_paths) { # 提取纯文件名(去除路径) name <- sub(".*/", "", path) # 移除"Pathway_Enrichment_all_results.xls"部分 name <- sub("Pathway_Enrichment_all_results\\.xls", "", name) # 移除下划线后的数字及后续内容 name <- gsub("_[0-9]+.*$", "", name) # 生成目标文件名(保留.xls后缀) new_name <- paste0(name, "sex-combined.xls") # 拼接完整的新文件路径 new_path <- file.path(folder_path, new_name) # 执行重命名 file.rename(from = path, to = new_path) }
关键说明
- 路径设置:务必把
folder_path替换成你实际的桌面文件夹路径,路径末尾的斜杠可以保留,避免拼接出错。 - 文件筛选:
pattern = "\\.xls$"用来只处理xls格式文件,如果是xlsx或其他格式,修改成对应的正则(比如"\\.xlsx$");如果要处理文件夹内所有文件,直接去掉pattern参数即可,但要确保文件夹里只有目标文件。 - 正则优化:把原代码里的
gsub("([0-9]+).*$", "", name)改成gsub("_[0-9]+.*$", "", name),能更精准定位到下划线后的数字部分,避免误删文件名里的其他数字。 - 安全提示:执行前建议先备份文件夹内的文件,防止误操作导致数据丢失。
内容的提问来源于stack exchange,提问作者cgill22
相关产品推荐
相关产品推荐

