我有一个包含 700 个文件的文件夹(350 个人,每个人有 2 个文件 R1 和 R2),
HI.2622.001.Index_16.ED16_KS1W9-3_342_R1.fastq.gz_matches_default.fit_ID_90.fit_ID90_e
HI.2622.001.Index_16.ED16_KS1W9-3_342_R2.fastq.gz_matches_default.fit_ID_90.fit_ID90_e
HI.2622.001.Index_19.ED18_ND1W27-2_288_R1.fastq.gz_matches_default.fit_ID_90.fit_ID90_e
HI.2622.001.Index_19.ED18_ND1W27-2_288_R2.fastq.gz_matches_default.fit_ID_90.fit_ID90_e
HI.2622.001.Index_21.ED20_SD1W11-7_237_R1.fastq.gz_matches_default.fit_ID_90.fit_ID90_e
HI.2622.001.Index_21.ED20_SD1W11-7_237_R2.fastq.gz_matches_default.fit_ID_90.fit_ID90_e
HI.2622.001.Index_2.ED2_KS2W24-7_43_R1.fastq.gz_matches_default.fit_ID_90.fit_ID90_e
HI.2622.001.Index_2.ED2_KS2W24-7_43_R2.fastq.gz_matches_default.fit_ID_90.fit_ID90_e
每个人有 2 个文件(R1,R2),像这样
HI.2622.001.Index_16.ED16_KS1W9-3_342_R1.fastq.gz_matches_default.fit_ID_90.fit_ID90_e
HI.2622.001.Index_16.ED16_KS1W9-3_342_R2.fastq.gz_matches_default.fit_ID_90.fit_ID90_e
我想合并每个人的 R1 和 R2 文件。如果只有 1 个人有 2 个文件我可以简单地做
cat HI.2622.001.Index_16.ED16_KS1W9-3_342_R1.fastq.gz_matches_default.fit_ID_90.fit_ID90_e HI.2622.001.Index_16.ED16_KS1W9-3_342_R2.fastq.gz_matches_default.fit_ID_90.fit_ID90_e > HI.2622.001.Index_16.ED16_KS1W9-3_342_all
但正如我所说,有 700 个文件,如果我想分别合并每个人的 R1 和 R2 文件,则需要花费大量时间。有什么办法可以做到这一点,例如通过循环?每个人都有不同的ID。我有包含每个人 ID 的文件
head inds.names
HI.2622.001.Index_16.ED16_KS1W9-3_342
HI.2622.001.Index_19.ED18_ND1W27-2_288
HI.2622.001.Index_21.ED20_SD1W11-7_237
HI.2622.001.Index_2.ED2_KS2W24-7_43
答案1
它应该相当简单参数扩展例如
for f in HI.2622.001.Index_*_R1.fastq.gz_matches_default.fit_ID_90.fit_ID90_e; do
cat "$f" "${f/R1/R2}" > "${f%%_R1*}_all"
done