2012-12-04 16 views
12

Qual è il gzip equivalente del seguente comando:
di file gzip decomprimere, da directory specifica

tar xvzf /usr/local/file/file/file.tar.gz -C /usr/local/extract_here 

sto cercando

gzip -d /usr/local/file/file/file.tar.gz -C /usr/local/extract_here 

ma non funziona, come posso fare che con gzip ?

risposta

22

in considerazione del fatto che si dispone di un file .tar.gz, il primo modo si è tentato, con l'opzione -C, funziona bene:

tar xvzf /dir/to/file.tar.gz -C /dir/to/output/

tar chiamate gzip per decomprimere, e quindi estrae i file dal flusso tar. gzip può solo decomprimere, quindi gunzip file.tar.gz lascerebbe semplicemente con il decompresso file.tar, su cui sarà necessario quindi tar xvf file.tar. L'opzione z di tar è semplicemente una scorciatoia per eseguire la decompressione con gzip insieme all'estrazione dei file.

Se si desidera semplicemente decomprimere un file .gz (anziché estrarre un file .tar.gz) in una directory diversa, è sufficiente collegarlo. Per esempio. gzip -dc <file.gz> /somewhere/file.

+0

Se si desidera spostare la domanda su un'altra piattaforma sx, credo che ci sia una procedura per questo – mit

3

Per conservare il file .tar senza compressione GZIP, io uso una riga come questa con buoni risultati:

cat file_to_uncompress.tar.gz | gzip -d > /destination_directory/packet_uncompressed.tar 

Questa è una forma utile e intuitivo per gestire i pacchetti in alcune situazioni.

1
cd /mydir_with_gz_files 
for i in *gz 
do 
gzip -dkc < $i > /my_destination_dir/${i%%.gz} 
done 

Questa sintassi è per l'estrazione più*.gz file contenuti in /mydir_with_gz_files in una directory diversa.

1) Qui è possibile utilizzare l'opzione -k perché altrimenti gzip NON conserverà l'archivio stesso. Buono da ricordare!

2) Voglio anche sottolineare ciò che sembra ovvio a coloro che danno la risposta corretta ma non era così per me e l'autore della domanda: gzip NON estrarrà i file in una DIRECTORY diversa, ma si aspetterà che il file non compresso risultante sia NOME essere specificato pure.

Ciò si ottiene qui dal $i > ${i%%.gz}bashparameter substitution che mette a nudo un nome come "file.gz" del suo suffisso ".gz". Con altre shell la sintassi sarà diversa (se possibile).

Problemi correlati