如何将两个文件夹中相同的文件名连接到一个文件?

如何将两个文件夹中相同的文件名连接到一个文件?

我有具有相同名称的 fasta.qz 序列文件,但在两个不同的文件夹中,我需要连接(始终仅连接这两个具有相同名称的文件夹!)。目录结构如下所示:

序列

**|--folderA**

|  \-- \--MOSA_F_TAC01n.1.fq.gz       
 |  \-- --MOSA_F_TAC08n.rem.1.fq.gz       
 |  \-- --WAIN_N_15m.rem.2.fq.gz       
 |  \-- --MOSA_F_TAC01n.2.fq.gz       
 |  \-- --MOSA_F_TAC08n.rem.2.fq.gz       
 |  \-- --WAIN_N_16m.1.fq.gz       
 |  \-- --MOSA_F_TAC01n.rem.1.fq.gz       
 |  \-- --PAUA_F_16v.1.fq.gz       
 |  \-- --WAIN_N_16m.2.fq.gz       
 |  \-- --MOSA_F_TAC01n.rem.2.fq.gz       
 |  \-- --PAUA_F_16v.2.fq.gz     


**| \--folderB**       
 |  \-- --MOSA_F_TAC01n.1.fq.gz       
 |  \-- --MOSA_F_TAC08n.rem.1.fq.gz       
 |  \-- --WAIN_N_15m.rem.2.fq.gz       
 |  \-- --MOSA_F_TAC01n.2.fq.gz       
 |  \-- --MOSA_F_TAC08n.rem.2.fq.gz       
 |  \-- --WAIN_N_16m.1.fq.gz       
 |  \-- --MOSA_F_TAC01n.rem.1.fq.gz       
 |  \-- --PAUA_F_16v.1.fq.gz       
 |  \-- --WAIN_N_16m.2.fq.gz       
 |  \-- --MOSA_F_TAC01n.rem.2.fq.gz       
 |  \-- --PAUA_F_16v.2.fq.gz   

正如您所看到的,文件名是相同的(它们的内容不同,即它是互补的,因此需要cat)。我想保留文件的名称并将相同的文件连接到一个具有所述名称的文件中(例如在名为folderC 的新文件夹中)。

答案1

尝试这样的事情:

for FILE in dir1/* ; do
    FILE2=dir2/${FILE#*/}
    if [ -f $FILE2 ] ; then
        cat $FILE $FILE2 > dir3/${FILE#*/}
    fi
done

其中dir1是源目录之一,dir2是另一个源目录,dir3是输出目录。

答案2

恐怕没那么容易。文件的“扩展名”表明这些是gzipped 数据,需要gunzip在连接之前进行 ped 处理。窃取克里斯蒂安·吉本斯的答案,尝试一下

for FILE in dir1/* ; do
    FILE2=dir2/${FILE#*/}
    if [ -f $FILE2 ] ; then
        gunzip -c $FILE $FILE2 | gzip > dir3/${FILE#*/}
    fi
done

相关内容