Unix rename命令使用正则表达式单步批量重命名fastq.gz文件
批量重命名单条正则实现方案
正确可用的单条命令
最简写法(无特殊命名冲突时可直接使用)
rename 's/_S\d+|_001//g' *.gz
说明:
- 正则用
|表示「或」逻辑,一次性匹配所有_S加数字和_001片段,搭配g全局修饰符全部替换为空,等效你的两条原命令 \d是正则数字匹配[0-9]的简写,写法更简洁
严谨写法(避免误删其他位置的匹配片段,推荐测序文件场景使用)
如果你担心目录下有其他文件名包含_Sxxx或者_001的片段被误改,可以用捕获组精准匹配测序文件的固定命名结构:
rename 's/^(.+)_S\d+_(R[12])_001(\.fastq\.gz)$/$1_$2$3/' *.gz
说明:
- 用捕获组锁定你需要保留的三段内容:前缀
abc4800_12、读段标识R1/R2、文件后缀.fastq.gz,直接拼接保留的内容完成重命名,只会修改符合你给出的命名规则的文件,不会误改其他文件
原尝试写法失效原因
你测试的s/_S[0-9]+_*?_001//g匹配逻辑是_S+数字后直接跟若干下划线再连_001,但实际文件名中间还有_R1片段,无法匹配到目标区域,自然不能完成替换。
内容的提问来源于stack exchange,提问作者Nathan
相关产品推荐
相关产品推荐

