Come posso eseguire il gunzip in un'altra directory di destinazione?


80

Come posso eseguire il gunzip su una directory di destinazione diversa da quella corrente?

Questo non ha funzionato:

gunzip *.gz /putthemhere/

Risposte:


104

Chiedi di gunzipeseguire l'output allo standard output e reindirizza a un file in quella directory:

gunzip -c file.gz > /THERE/file

zcatè una scorciatoia per gunzip -c.

Se vuoi eseguire il gunzip di più file iterare su tutti i file:

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

(qui basenameviene utilizzato per ottenere la parte del nome file senza l'estensione)


3
Crea il file, ma non conserva la proprietà del file, le autorizzazioni, ecc. Ciò può essere positivo o negativo a seconda della situazione precisa.
Chris Johnson,

2

Se è necessario estrarre un singolo file e scrivere in una directory di proprietà root, utilizzare sudo dd:

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

Se il file proviene da una fonte remota (es. Ssh, curl https, ecc.), Puoi farlo in questo modo:

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

(Nota che questi esempi funzionano solo per un singolo file, a differenza dell'esempio * .gz, che è tutti i file compressi nella directory.)


Per scrivere con i privilegi di root, sudo tee $filename >/dev/nullè un po 'più idiomatico dell'uso dd.
dcoles

1

Puoi provare con> per reindirizzare il risultato nel luogo desiderato.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.