循环以在UNIX中连接多个具有几乎相同名称的文件对

时间:2014-07-29 15:38:22

标签: loops cat fastq

我有一个非常基本的问题,但我无法得到解决方案。我在同一目录中有多个文件,我想连接每对文件。名称是:

Sample1_R1_L001.fastq Sample1_R2_L001.fastq Sample2_R1_L001.fastq Sample2_R2_L001.fastq Sample3_R1_L001.fastq Sample3_R2_L001.fastq

(等...)

我想要的结果是通过样本连接,例如 cat Sample1_R1_L001.fastq Sample1_R2_L001.fastq> Sample1_concat.fastq

我试过这个循环, 找 。 -name“ _R?_ ”|读取文件时;做“$ file” R1 * .fastq“$ file”_R2_L001.fastq> “$文件” _merged.fastq

但它不起作用。有什么想法吗?

2 个答案:

答案 0 :(得分:0)

我是这样做的:

for i in {1..4}; do echo cat Sample"$i"* > combined_"$i".txt; done

循环编号然后构建命令...获取实际文件名肯定是可能的,但是使用shell,我只做最简单的事情,即使这意味着部分暴力强制循环。

将1..4替换为任何限制,shell会将其扩展为所有不同的数字。

答案 1 :(得分:0)

for i in {1..3}; 
do for j in 1 2; 
do cat 6692_S${i}_S${i}_*_R${j}_001.fastq.gz >  6692_S${i}_R${j}_concatenate.fastq.gz; 
done; 
done

#我的样品名称例如6692_S1_S1_L001_R1_001.fastq.gz; 6692_S1_S1_L002_R1_001.fastq.gz

我认为您可以根据自己的需要进行调整。