如何用一条命令批量合并成对编号的测序fq.gz文件?
批量合并测序样本文件的命令方案
可以用两条串联的shell循环命令一次性完成所有样本的合并操作,命令如下:
for f in *.1.fq.gz; do p="${f%.1.fq.gz}"; cat "$f" "$p.rem.1.fq.gz" > "$p.merged.1.fq.gz"; done && for f in *.2.fq.gz; do p="${f%.2.fq.gz}"; cat "$f" "$p.rem.2.fq.gz" > "$p.merged.2.fq.gz"; done
命令说明:
- 第一个循环遍历当前目录下所有
*.1.fq.gz格式的文件(非rem版本的R1文件) - 通过
${f%.1.fq.gz}提取每个文件的核心前缀(比如从S10_L001_R1_001.1.fq.gz得到S10_L001_R1_001) - 使用
cat直接合并原文件和对应的rem.1.fq.gz文件,输出为[前缀].merged.1.fq.gz(保留原文件,避免误操作丢失数据) - 第二个循环以完全相同的逻辑处理
*.2.fq.gz和对应的rem.2.fq.gz文件
注意事项:
- 执行命令前建议先拿1-2个样本做测试,比如手动执行
cat S10_L001_R1_001.1.fq.gz S10_L001_R1_001.rem.1.fq.gz > test.merged.1.fq.gz,用zless test.merged.1.fq.gz检查合并后的文件是否正常 - 如果确实需要直接覆盖原文件(不推荐),可以把输出路径改成
$f,但一定要做好原文件备份 - 该命令利用gzip压缩文件可直接用
cat合并的特性,无需解压,处理600组样本效率很高
内容的提问来源于stack exchange,提问作者niko_bio
相关产品推荐
相关产品推荐

