Archiving Multiple VCF Files with bgzip Using Bash for Loop

Answered using ChatGPT 4o by ChatGPT4o

Question:

как циклом for заархивировать bgzip много vcf

Answer:

Для архивации множества VCF файлов с использованием bgzip в цикле for на языке программирования Bash, вы можете использовать следующий скрипт. Этот скрипт предполагает, что у вас установлен bgzip (часть пакета htslib).

#!/bin/bash

# Путь к директории с VCF файлами
VCF_DIR="/path/to/vcf/files"

# Перейти в директорию с VCF файлами
cd "$VCF_DIR" || exit

# Цикл по всем VCF файлам в директории
for vcf_file in *.vcf; do
    # Проверка, что файл существует
    if [[ -f "$vcf_file" ]]; then
        echo "Архивируем $vcf_file"
        bgzip "$vcf_file"
    else
        echo "Файл $vcf_file не найден"
    fi
done

echo "Архивация завершена"

Объяснение:

  1. VCF_DIR — путь к директории, где находятся ваши VCF файлы.
  2. cd "$VCF_DIR" || exit — переходим в указанную директорию или выходим из скрипта, если переход не удался.
  3. for vcf_file in *.vcf; do — цикл по всем файлам с расширением .vcf в текущей директории.
  4. if [[ -f "$vcf_file" ]]; then — проверка, что файл существует.
  5. bgzip "$vcf_file" — архивируем файл с помощью bgzip.
  6. echo "Архивация завершена" — вывод сообщения о завершении архивации.

Сохраните этот скрипт в файл, например, archive_vcfs.sh, сделайте его исполняемым с помощью команды chmod +x archive_vcfs.sh и запустите его: ./archive_vcfs.sh.

Убедитесь, что у вас установлен bgzip. Если нет, установите его с помощью пакетного менеджера вашей операционной системы. Например, на Ubuntu это можно сделать командой sudo apt-get install tabix.