首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >连接多个fastq文件并重命名为父文件夹

连接多个fastq文件并重命名为父文件夹
EN

Stack Overflow用户
提问于 2019-12-21 06:34:49
回答 1查看 200关注 0票数 0

目前,我有fq.gz文件形式的基因组测序数据,每个样本由一个标题为样本名称的文件夹组成,其中包含2-8对正向和反向读取。我想将所有的正向和反向文件连接成每个样本的一个正向和一个反向文件,同时保持配对顺序。

我的数据组织如下:

代码语言:javascript
复制
/ParentFolder/SampleA/V549_1.fq.gz
/ParentFolder/SampleA/V549_2.fq.gz
/ParentFolder/SampleA/V550_1.fq.gz
/ParentFolder/SampleA/V550_2.fq.gz
/ParentFolder/SampleB/V588_1.fq.gz
/ParentFolder/SampleB/V588_2.fq.gz
/ParentFolder/SampleB/V599_1.fq.gz
/ParentFolder/SampleB/V599_2.fq.gz

为了连接这些文件,我尝试了以下操作:

代码语言:javascript
复制
ls *_1.fq.gz | sort | xargs cat > SampleA_1.fq.gz
ls *_2.fq.gz | sort | xargs cat > SampleA_2.fq.gz

这适用于一个示例文件夹,但是,由于我有几十个示例,我想编写一个bash脚本来完成所有示例,并将连接的文件重命名为其父文件夹的名称。我仍在学习中,但我有点迷茫,我非常感谢任何人在这个问题上的帮助。

我尝试过以下几种方法,但都没有成功:

代码语言:javascript
复制
for i in $(find ./ -type f -name "*.fq.gz"; done | sort | uniq)
do echo "Merging 1"
cat "$i"*_1.fq.gz > "$i"CG1-1_1.fq.gz

感谢您的任何意见/建议/解决方案。

EN

回答 1

Stack Overflow用户

发布于 2019-12-21 16:42:48

考虑以下逻辑:

为每个后缀(_1,_2)找到

  • Find all fq.gz files
  • Extract list of folders
  • For each folder
  • 将所有包含'fq‘文件合并到新的文件夹中

代码语言:javascript
复制
p=pp
for suffix in 1 2 ; do
    # Find all dirs containing suffix files.
    dirs=$(printf '%s\n' $p/*/*_$suffix.fq.gz | sed 's:/[^/]*$::' | uniq)
    for d in $dirs ; do
        # Merge, and store in parent.
        (cd $d ; cat *_${suffix}.fq.gz > ../${d##*/}_${suffix}.fq.gz)
    done
done

备注:

  • 代码假定文件夹名称中没有特殊字符。如果合并过程将解压缩原始数据并重新压缩,
  • 将创建更紧凑的文件。(gzcat *.gz
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59432005

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档