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

Помощь будет очень признательна.

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

1 ответ

Решение

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

for i in chr*.vcf.gz
do 
  bcftools index -t -f $i 
done 
Другие вопросы по тегам