Создание gzip-файла с использованием скрипта bash - PullRequest
0 голосов
/ 11 июля 2019

У меня есть скрипт bash, который создает кучу файлов. Однако я хотел, чтобы мои файлы были gzip. Как я написал свой сценарий, он создает файлы с расширением * .gz. Но когда я проверяю gzip или нет, используя команду

gzip -l hard_0.msOut.gz 

там написано gzip: hard_0.msOut.gz: не в формате gzip

Мой скрипт bash:


#!/bin/bash

#generating training data

i_hard=0
i_soft=0
i_neutral=0

for entry in /home/noor/popGen/sweeps/slim_script/singlePop/*
do
    if [[ $entry == *"hard"* ]]; then
        echo "It's there!"
        /home/noor/popGen/build/./slim $entry > /home/noor/popGen/sweeps/msOut/singlePop/hard_$i_hard.msOut.gz
        i_hard=$((i_hard+1))
    fi

    if [[ $entry == *"soft"* ]]; then
        echo "It's there!"
        /home/noor/popGen/build/./slim $entry > /home/noor/popGen/sweeps/msOut/singlePop/soft_$i_soft.msOut.gz
        i_soft=$((i_soft+1))
    fi
    if [[ $entry == *"neutral"* ]]; then
        echo "It's there!"
        /home/noor/popGen/build/./slim $entry > /home/noor/popGen/sweeps/msOut/singlePop/neutral_$i_neutral.msOut.gz
        i_neutral=$((i_neutral+1))
    fi

done

Может кто-нибудь сказать мне, как можно создавать файлы gzip, используя скрипт bash, который я сделал.

1 Ответ

1 голос
/ 11 июля 2019

Вы выводите значения в файл с именем some.gz, но это не значит, что он распакован. Это просто означает, что вы выбрали расширение файла .gz.

Чтобы сжать вывод, добавьте следующее, например:

echo "compress me" | gzip -c > file.gz

Вышеприведенное будет принимать вывод echo и направлять его в gzip (-c отправит в stdout) и перенаправлять stdout в файл с именем file.gz

Ваш полный код:

#!/bin/bash

#generating training data

i_hard=0
i_soft=0
i_neutral=0

for entry in /home/noor/popGen/sweeps/slim_script/singlePop/*
do
    if [[ $entry == *"hard"* ]]; then
        echo "It's there!"
        /home/noor/popGen/build/./slim $entry | gzip -c > /home/noor/popGen/sweeps/msOut/singlePop/hard_$i_hard.msOut.gz
        i_hard=$((i_hard+1))
    fi

    if [[ $entry == *"soft"* ]]; then
        echo "It's there!"
        /home/noor/popGen/build/./slim $entry | gzip -c > /home/noor/popGen/sweeps/msOut/singlePop/soft_$i_soft.msOut.gz
        i_soft=$((i_soft+1))
    fi
    if [[ $entry == *"neutral"* ]]; then
        echo "It's there!"
        /home/noor/popGen/build/./slim $entry | gzip -c > /home/noor/popGen/sweeps/msOut/singlePop/neutral_$i_neutral.msOut.gz
        i_neutral=$((i_neutral+1))
    fi

done
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...