Использование цикла for с 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 и так далее).

Помощь будет высоко оценена.

Всего наилучшего


person tacrolimus    schedule 03.12.2019    source источник


Ответы (1)


Возможно, перебрать имена файлов напрямую:

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