1

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

但是,当我运行上述循环时,我只得到第一个 chromosme 条目的索引文件,其余部分被忽略(即一个 chr1_ _ .vcf.gz.tbi 文件仅被索引,其余部分被忽略,然后是第一个 chr2 文件和第一个 chr3 文件等等)。

帮助将不胜感激。

祝一切顺利

4

1 回答 1

3

也许直接循环文件名:

for i in chr*.vcf.gz
do 
  bcftools index -t -f $i 
done 
于 2019-12-04T11:20:01.710 回答