如何在R中按文件名规则筛选重命名文件并批量循环处理
R环境下Fastq文件的批量清理与重命名
实现步骤与代码
- 设置工作目录
替换为你的fastq文件所在的实际路径:
setwd("/path/to/your/fastq/files")
- 获取目标文件列表
筛选目录下所有.fastq格式的文件:
fastq_files <- list.files(pattern = "\\.fastq$", full.names = TRUE)
- 批量处理文件
循环遍历每个文件,判断是否符合保留条件,完成重命名或删除操作:
for (file in fastq_files) { # 提取纯文件名(去除路径) filename <- basename(file) # 拆分文件名:分离前缀(如T1-T1)和后缀(如R1.fastq) name_split <- strsplit(filename, "_")[[1]] prefix <- name_split[1] suffix <- paste(name_split[-1], collapse = "_") # 拆分前缀中的短横线部分 prefix_parts <- strsplit(prefix, "-")[[1]] # 判断短横线前后字符是否一致 if (length(prefix_parts) == 2 && prefix_parts[1] == prefix_parts[2]) { # 生成新文件名并重命名 new_name <- paste(prefix_parts[1], suffix, sep = "_") file.rename(file, file.path(dirname(file), new_name)) cat("重命名完成:", filename, "→", new_name, "\n") } else { # 删除不符合条件的文件 file.remove(file) cat("已删除文件:", filename, "\n") } }
注意事项
- 运行代码前务必备份原始文件,避免误操作导致数据丢失
- 如果文件名包含多个下划线或短横线,可根据实际格式调整
strsplit的分隔符和拆分逻辑 - 代码仅处理
.fastq后缀的文件,若需包含.fastq.gz等格式,可修改pattern参数为"\\.fastq(\\.gz)?$"
内容的提问来源于stack exchange,提问作者Andhika Prasetyo
相关产品推荐
相关产品推荐

