Loops 循环以连接UNIX中名称几乎相同的多对文件

Loops 循环以连接UNIX中名称几乎相同的多对文件,loops,cat,fastq,Loops,Cat,Fastq,我有一个非常基本的问题,但我找不到解决办法。我有多个文件在同一个目录中,我想连接每一对文件。名单如下: 样本1_R1_L001.fastq 样本1_R2_L001.fastq 样本2_R1_L001.fastq 样本2_R2_L001.fastq 样本3_R1_L001.fastq 样本3_R2_L001.fastq (等等……) 我想要的结果是通过示例连接,例如 cat Sample1_R1_L001.fastq Sample1_R2_L001.fastq>Sample1_concat.fas

我有一个非常基本的问题,但我找不到解决办法。我有多个文件在同一个目录中,我想连接每一对文件。名单如下:

样本1_R1_L001.fastq 样本1_R2_L001.fastq 样本2_R1_L001.fastq 样本2_R2_L001.fastq 样本3_R1_L001.fastq 样本3_R2_L001.fastq

(等等……)

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

我试过这个循环, 找到-读取文件时命名为“_R?124;”;执行“$file”R1*.fastq“$file”\u R2\u L001.fastq>“$file”\u merged.fastq

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

以下是我的想法:

for i in {1..4}; do echo cat Sample"$i"* > combined_"$i".txt; done
在数字上循环,然后生成命令。。。获取实际的文件名当然是可能的,但是使用shell,我只做可能工作的最简单的事情,即使这意味着部分强制循环

将1..4替换为任何限制,外壳将为您将其扩展为所有不同的数字

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


我想你可以根据自己的需要量身定做。

非常感谢你的回复。实际上,文件名有点复杂(更像MTNT-Enr-BS_S70_L001_R1_001.fastq),每个样本有一对(因此MTNT-Enr-BS_S70_L001_R1_001.fastq和MTNT-Enr-BS_S70_L001_R2_001.fastq)。我可能会尝试简化名称,但从长远来看,我希望能够在不做太多调整的情况下运行循环。有什么建议吗?再次感谢!嗯,如果没有看到更大的名字示例,我不确定。正如我所说,对于shell,我倾向于根据具体问题快速解决问题。更准确地说,文件名有点复杂(类似于MTNT-Enr-BS_S70_L001_R1_001.fastq),每个样本有一对(因此MTNT-Enr-BS_S70_L001_R1_001.fastq和MTNT-Enr-BS_S70_L001_R2_001.fastq)。我可能会尝试简化名称,但从长远来看,我希望能够在不做太多调整的情况下运行循环。有什么建议吗?谢谢你Benoit!