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