Arquivos Gziping recursivamente (e manter arquivos originais) e entrada de texto gziping

2

Eu preciso do Gzip para pré-compactar alguns arquivos estáticos para um servidor da Web que estou construindo. Todos os arquivos que preciso para gzip estarão em uma pasta chamada .cache . Já que alguns clientes podem não aceitar respostas que são gzipadas, eu gostaria de manter todos os arquivos originais quando eu os compactar. Existe algum comando que eu possa usar para recursivamente gzip os arquivos na minha pasta .cache enquanto ainda mantém os arquivos originais? Será que este comando gzip gzipou arquivos (aqueles que já foram postfixados com .gz) se executados em uma pasta com arquivos já gzipados?

Enquanto estamos no tópico do gzip: Eu estive procurando uma maneira de gzipar entrada de texto passada para gzip ao invés de arquivos. Eu vim com postfixing um traço no comando (como gzip -c - ), mas não tenho certeza se isso vai funcionar ou como eu usá-lo. Alguém pode explicar?

    
por Bailey Parker 21.06.2011 / 12:06

1 resposta

6

Use a opção -c para gerar o resultado para stdout . gzip ing todos os arquivos em .cache :

for i in .cache/*; do gzip -c "$i" > "$i.gz"; done

EDITAR:
Para gzip novamente e não gzip os arquivos gzip ed verifique o sufixo:

for i in .cache/*; do [ "${i:(-3)}" == ".gz" ] || gzip -c "$i" > "$i.gz"; done

Portanto, apenas os arquivos que não terminarem em .gz serão gzip ed.

    
por 21.06.2011 / 12:10