Tengo un directorio con muchos .txt.gz
archivos (donde los nombres no siguen un patrón específico).
¿Cuál es el camino más simple para gunzip
ellos? Quiero preservar sus nombres originales, por lo que van desde whatevz.txt.gz
awhatevz.txt
¿Qué tal solo esto?
$ gunzip *.txt.gz
gunzip
creará un archivo comprimido sin el .gz
sufijo y eliminará el archivo original de forma predeterminada (ver más abajo para más detalles). *.txt.gz
será expandido por su shell a todos los archivos que coincidan.
Este último bit puede meterte en problemas si se expande a una larga lista de archivos. En ese caso, intente usar find
y -exec
hacer el trabajo por usted.
Desde la página del manual gzip(1)
:
gunzip takes a list of files on its command line and replaces each file whose name ends with .gz, -gz, .z, -z, or _z (ignoring case) and which begins with the correct magic number with an uncompressed file without the original extension.
gzip puede almacenar y restaurar el nombre de archivo utilizado en el momento de la compresión. Incluso si cambia el nombre del archivo comprimido, puede sorprenderse al descubrir que se restablece al nombre original nuevamente.
Desde la página de manual de gzip:
Por defecto, gzip mantiene el nombre del archivo original y la marca de tiempo en el archivo comprimido. Estos se utilizan al descomprimir el archivo con la
-N
opción. Esto es útil cuando el nombre del archivo comprimido se truncó o cuando la marca de tiempo no se conservó después de una transferencia de archivo.
Y estos nombres de archivo almacenados en metadatos también se pueden ver con file
:
$ echo "foo" > myfile_orig
$ gzip myfile_orig
$ mv myfile_orig.gz myfile_new.gz
$ file myfile_new.gz
myfile_new.gz: gzip compressed data, was "myfile_orig", last modified: Mon Aug 5 08:46:39 2019, from Unix
$ gunzip myfile_new.gz # gunzip without -N
$ ls myfile_*
myfile_new
$ rm myfile_*
$ echo "foo" > myfile_orig
$ gzip myfile_orig
$ mv myfile_orig.gz myfile_new.gz
# gunzip with -N
$ gunzip -N myfile_new.gz # gunzip with -N
$ ls myfile_*
myfile_orig
Si desea conservar el .gz
archivo, puede usar lo siguiente:
$ gunzip -c inputfile.gz >outputfile
Use este comando para descomprimir (descomprimir archivos gz) todos los archivos en el directorio actual y mantener los originales:
gunzip -k *.gz