Como faço o zip para um diretório de destino diferente?

80

Como faço o zip para um diretório de destino que não seja o atual?

Isso não funcionou:

gunzip *.gz /putthemhere/
Scott Szretter
fonte

Respostas:

104

Peça gunzippara enviar para a saída padrão e redirecionar para um arquivo nesse diretório:

gunzip -c file.gz > /THERE/file

zcaté um atalho para gunzip -c.

Se você deseja compactar vários arquivos, itere sobre todos os arquivos:

for f in *.gz; do
  STEM=$(basename "${f}" .gz)
  gunzip -c "${f}" > /THERE/"${STEM}"
done

(aqui basenameé usado para obter a parte do nome do arquivo sem a extensão)

Benjamin Bannier
fonte
3
Cria o arquivo, mas não preserva a propriedade, as permissões, etc. Isso pode ser bom ou ruim, dependendo da sua situação precisa.
9788 Chris-Johnson
2

Se você precisar extrair um único arquivo e gravar em um diretório de propriedade raiz, use sudo dd:

zcat filename.conf.gz | sudo tee /etc/filename.conf >/dev/null

Se o arquivo vier de uma fonte remota (por exemplo, ssh, curl https, etc), você pode fazer o seguinte:

ssh remoteserver cat filename.conf.gz | zcat | sudo tee /etc/filename.conf >/dev/null

(Observe que esses exemplos funcionam apenas para um único arquivo, diferentemente do exemplo * .gz, que é todos os arquivos compactados no diretório.)

Jamieson Becker
fonte
Para escrever com privilégios de root, sudo tee $filename >/dev/nullé um pouco mais idiomático do que usar dd.
dcoles
1

Você pode tentar com> redirecionar o resultado para o local desejado.

jangelfdez
fonte