Me gustaría comprimir un archivo de texto usando la herramienta de línea de comando gzip mientras mantengo el archivo original. Por defecto ejecuta el siguiente comando
gzip file.txt
resulta en modificar este archivo y renombrarlo file.txt.gz. En lugar de este comportamiento, me gustaría tener este nuevo archivo comprimido además del existente file.txt. Por ahora estoy usando el siguiente comando para hacer eso
gzip -c file.txt > file.txt.gz
Funciona, pero me pregunto por qué no hay una solución más fácil para hacer una tarea tan común. ¿Tal vez me perdí la opción de hacer eso?
command-line
files
gzip
Manuel Selva
fuente
fuente

Respuestas:
Para GNU
gzip1.6 o superior, FreeBSD y derivados o versiones recientes de NetBSD, vea la respuesta de don_cristi .Con cualquier versión, puede usar redirecciones de shell como en:
Cuando no se le da ningún argumento,
gziplee su entrada estándar, la comprime y escribe la versión comprimida en su salida estándar. Como beneficio adicional, al usar redirecciones de shell, no tiene que preocuparse por los archivos llamados"--help"o"-"(para los que este último sigue siendo un problemagzip -c --).Otro beneficio adicional
gzip -c file > file.gzes que sifileno se puede abrir, el comando fallará sin crear un vacíofile.gz(o sobrescribir uno existentefile.gz) y sin ejecutarsegzipen absoluto.Sin
gzip -kembargo, una diferencia significativa en comparación es que no se intentará copiar losfilemetadatos (propiedad, permisos, tiempo de modificación, nombre del archivo sin comprimir) enfile.gz.Además, si
file.gzya existía, lo anulará silenciosamente a menos que haya activado lanoclobberopción en su shell (con,set -o noclobberpor ejemplo, en shells POSIX).fuente
-c.-kopcion? No se pudo encontrar en las páginas de manual, por ejemplo, esta versión aquí linux.die.net/man/1/gzip . Además, parece que gzip copia los metadatos del archivo de forma predeterminada.Tenga en cuenta que el lanzamiento reciente (junio de 2013) "acepta la opción --keep (-k), por coherencia con herramientas como xz, lzip y bzip2. Con esta opción, gzip ya no elimina los archivos de entrada con nombre al comprimir o descomprimir" .
gzip-1.6Extracto de la página del manual:
Entonces, a partir de
1.6, puede usar-ko--keepconservar el archivo original:(tenga en cuenta que no funciona si
$filees-(quegzipinterpreta como stdin de significado en lugar del archivo real llamado-), en cuyo caso, debe cambiarlo a./-)Esa opción se introdujo por primera vez en la implementación de FreeBSD de
gzip(en FreeBSD 7.0 en 2007) para mantener la coherenciabzip2. Esogzipse basa en una reescritura de GNUgzippor parte de NetBSD. La-kopción finalmente regresó a NetBSD en 2010 .fuente
De la documentación parece que no hay opción para crear una copia del archivo.
Puedes definir una función de shell
y entonces
fuente
-, debe llamarlo comogzipkeep ./-.