将两个文件合并为一个文件

将两个文件合并为一个文件

我有一个包含 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

相关内容