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

寻求按文件名首下划线前相同ID合并fastq.gz文件的便捷方法

批量合并同ID的fastq.gz文件方案

针对你需要合并文件名中第一个下划线前ID相同的fastq.gz文件的需求,这里有几个比手动逐个执行cat更便捷的批量处理方法,完全符合你要求的输出格式和压缩要求:

方法一:Bash循环批量处理

这是最直观且容易理解的方式,先提取所有唯一的ID,再循环合并对应文件:

# 遍历所有唯一的ID(提取文件名第一个下划线前的部分)
for id in $(ls *.fastq.gz | cut -d'_' -f1 | sort -u); do
  # 合并所有对应ID的文件,输出为{ID}.fastq.gz
  cat "${id}"_*.fastq.gz > "${id}.fastq.gz"
done

步骤解释:

  • ls *.fastq.gz:列出当前目录下所有fastq.gz格式的文件
  • cut -d'_' -f1:按下划线分割文件名,提取第一个字段(也就是你要的ID)
  • sort -u:对提取的ID去重,得到唯一的ID列表
  • 循环每个ID,用cat拼接所有以该ID开头的压缩文件——划重点:gzip格式支持直接拼接压缩文件,拼接后的文件依然是有效的gzip压缩包,不需要额外做压缩操作

方法二:单行命令(awk + xargs)

如果喜欢更简洁的单行命令,可以用awk和xargs组合实现:

ls *.fastq.gz | awk -F'_' '{print $1}' | sort -u | xargs -I {} cat {}_*.fastq.gz > {}.fastq.gz

步骤解释:

  • awk -F'_' '{print $1}':和cut作用类似,按下划线分割并提取第一个字段
  • xargs -I {}:把每个唯一ID替换为{},然后执行后续的cat命令完成合并

安全验证小技巧

在正式执行合并前,可以先把cat换成echo,预览一下将要执行的命令,确保不会误操作:

for id in $(ls *.fastq.gz | cut -d'_' -f1 | sort -u); do
  echo cat "${id}"_*.fastq.gz > "${id}.fastq.gz"
done

这样你可以先确认每个合并命令是否正确,没问题再替换回cat执行即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 08:30:53