usando arquivos compactados (.gz) com scripts de linha de comando que esperam arquivos não compactados

0

Para poupar espaço em disco, eu fiz gunzip em muitos dos meus arquivos que uso regularmente. Qual é a melhor maneira de usar a versão .gz desses arquivos de texto com, digamos, scripts python?

Mais especificamente, há uma maneira de enviar o arquivo compactado para um script que está esperando um arquivo descompactado?

Por exemplo, se normalmente eu corresse

python test.py file.txt

Como eu executaria o mesmo comando com file.txt.gz ?

Eu sei que posso fazer algo como

gzip -dk file.txt.gz; python test.py file.txt; rm file.txt

Mas isso parece um pouco longo; existe uma maneira melhor / mais rápida?

    
por Constantino 24.09.2015 / 17:42

1 resposta

0

Você quer

for file in *.txt.gz; do python test.py <(zcat "$file"); done

ou

python test.py <(zcat *.txt.gz)

dependendo da quantidade de dados que você deseja passar para o programa test.py

com base no seu comentário:

proc_subs=$( printf ' <(zcat "%s")' *.txt.gz )
echo "python test.py $proc_subs -v"
#eval "python test.py $proc_subs -v"

descomente a linha de eval se você gostar da aparência

    
por 24.09.2015 / 18:54