目前,我有fq.gz文件形式的基因组测序数据,每个样本由一个标题为样本名称的文件夹组成,其中包含2-8对正向和反向读取。我想将所有的正向和反向文件连接成每个样本的一个正向和一个反向文件,同时保持配对顺序。
我的数据组织如下:
/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为了连接这些文件,我尝试了以下操作:
ls *_1.fq.gz | sort | xargs cat > SampleA_1.fq.gz
ls *_2.fq.gz | sort | xargs cat > SampleA_2.fq.gz这适用于一个示例文件夹,但是,由于我有几十个示例,我想编写一个bash脚本来完成所有示例,并将连接的文件重命名为其父文件夹的名称。我仍在学习中,但我有点迷茫,我非常感谢任何人在这个问题上的帮助。
我尝试过以下几种方法,但都没有成功:
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感谢您的任何意见/建议/解决方案。
发布于 2019-12-21 16:42:48
考虑以下逻辑:
为每个后缀(_1,_2)找到
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备注:
https://stackoverflow.com/questions/59432005
复制相似问题