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.