You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Bash中按物种标识批量合并fastq.gz文件?

基于物种标识自动合并fastq.gz文件的Bash脚本方案

问题背景

需要根据文件名中的物种标识(如示例中的107、1322)自动合并对应fastq.gz文件,无需手动指定物种名称,让脚本可复用在不同物种组。待处理文件名示例:

GSF3164-Moyle-107-6_L_S75_R1_001.fastq.gz
GSF3164-Moyle-107-6_L_S75_R2_001.fastq.gz
GSF3164-Moyle-107-7_F_S48_R1_001.fastq.gz
GSF3164-Moyle-107-7_F_S48_R2_001.fastq.gz
GSF3164-Moyle-107-7_L_S76_R1_001.fastq.gz
GSF3164-Moyle-107-7_L_S76_R2_001.fastq.gz
GSF3164-Moyle-1322-10_F_S44_R1_001.fastq.gz
GSF3164-Moyle-1322-10_F_S44_R2_001.fastq.gz
GSF3164-Moyle-1322-10_L_S96_R1_001.fastq.gz
GSF3164-Moyle-1322-10_L_S96_R2_001.fastq.gz
GSF3164-Moyle-1322-1_F_S42_R1_001.fastq.gz
GSF3164-Moyle-1322-1_F_S42_R2_001.fastq.gz

解决方案

方案1:合并同一物种的所有文件(不分R1/R2)

如果需要将同一物种的所有fastq.gz文件合并为单个文件,使用以下脚本:

# 创建输出目录(不存在则自动创建)
mkdir -p otherFolder

# 提取所有唯一物种标识并遍历
for species in $(ls GSF3164-Moyle-*.fastq.gz | cut -d'-' -f3 | sort -u); do
    cat GSF3164-Moyle-${species}-*.fastq.gz > otherFolder/${species}.fastq.gz
done

方案2:按R1/R2分别合并(推荐)

测序数据通常需要将正反向读段(R1/R2)分开合并,更符合下游分析需求:

mkdir -p otherFolder

# 获取唯一物种列表
species_list=$(ls GSF3164-Moyle-*.fastq.gz | cut -d'-' -f3 | sort -u)

# 遍历每个物种,分别合并R1和R2文件
for species in $species_list; do
    cat GSF3164-Moyle-${species}-*_R1_*.fastq.gz > otherFolder/${species}_R1.fastq.gz
    cat GSF3164-Moyle-${species}-*_R2_*.fastq.gz > otherFolder/${species}_R2.fastq.gz
done

关键步骤解释

  1. 提取物种标识:cut -d'-' -f3以-为分隔符,截取文件名第3段(即物种标识),sort -u确保每个物种只出现一次
  2. 输出目录准备:mkdir -p otherFolder避免因目录不存在导致的错误
  3. 合并压缩文件:直接使用cat合并gz文件是可行的,gzip格式原生支持拼接操作

注意事项

  • 确保当前目录仅包含目标fastq.gz文件,避免无关文件干扰物种标识提取
  • 若文件名格式变更,需调整cut命令的字段位置(例如物种标识在第4段则改为-f4)

内容的提问来源于stack exchange,提问作者tbiewerh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 11:05:00