在 bcftools 中使用 for 循环

Using a for loop with bcftools

我有一个包含 900 个文件的文件夹,名称如下:

chr1_643632542_63643636.vcf.gz
chr1_23634521_626356.vcf.gz
chr2_363643262346_234324.vcf.gz
chr2_1345_21346.vcf.gz
....
chr22_134545_3245145.vcf.gz 

我试图用循环索引每个文件:

for i in {1..22}
do 
  bcftools index -t -f chr${i}_*_*.vcf.gz 
done 

所以我最终会得到以下结果:

chr1_643632542_63643636.vcf.gz
chr1_643632542_63643636.vcf.gz.tbi
chr1_23634521_626356.vcf.gz
chr1_23634521_626356.vcf.gz.tbi
chr2_363643262346_234324.vcf.gz
chr2_363643262346_234324.vcf.gz.tbi
chr2_1345_21346.vcf.gz
chr2_1345_21346.vcf.gz.tbi
....
chr22_134545_3245145.vcf.gz 
chr22_134545_3245145.vcf.gz.tbi

然而,当我 运行 上面的循环时,我只得到第一个染色体条目的索引文件,其余部分被忽略(即一个 chr1__.vcf.gz.tbi 仅索引文件并忽略其余部分,然后是第一个 chr2 文件和第一个 chr3 文件,依此类推)。

非常感谢您的帮助。

祝一切顺利

也许直接遍历文件名:

for i in chr*.vcf.gz
do 
  bcftools index -t -f $i 
done