Reducir de tamaño los archivos de texto


El comando Unix para comprimir archivos de texto es compress. Este comando lee el contenido de los archivos, los analiza para encontrar partes o tramos iguales para sustituirlos por un número inferior de caracteres. Para la elección de los caracteres que se utilizaran se ocupa el sistema de codificación Lempel-Ziv adaptiva y se genera un archivo con la extensión .Z.

El comando uncompress sirve para recuperar los archivos comprimidos y los regresa a su forma original.

 $ cat documento.txt
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget
dolor.vAenean massa. Cum sociis natoque penatibus et magnis dis parturient montes,
nascetur ridiculus mus. Donec quam felis, ultricies nec, pellentesque eu, pretium
quis, sem. Nulla consequat massa quis enim. Donec pede justo, fringilla vel, aliquet
nec, vulputate eget, arcu. In enim justo, rhoncus ut, imperdiet a, venenatis vitae,
justo. Nullam dictum felis eu pede mollis pretium. Integer tincidunt. Cras dapibus.
Vivamus elementum semper nisi. Aenean vulputate eleifend tellus. Aenean leo ligula,
porttitor eu, consequat vitae, eleifend ac, enim. Aliquam lorem ante, dapibus
in, viverra quis, feugiat a, tellus. Phasellus viverra nulla ut metus varius laoreet.
Quisque rutrum. Aeneanimperdiet. Etiam ultricies nisi vel augue. Curabitur ullamcorper
ultricies nisi. Nam eget dui.

...

Vivamus laoreet. Nullam tincidunt adipiscing enim. Phasellus tempus. Proin viverra,
ligula sit amet ultrices semper, ligula arcu tristique sapien, a accumsan nisi mauris
ac eros. Fusce neque. Suspendisse faucibus, nunc et pellentesque egestas, lacus ante
convallis tellus, vitae iaculis lacus elit id tortor. Vivamus aliquet elit ac nisl.
Fusce fermentum odio nec arcu. Vivamus euismod mauris. In ut quam vitae odio lacinia
tincidunt. Praesent ut ligula non mi varius sagittis. Cras sagittis. Praesent ac sem
eget est egestas volutpat. Vivamus consectetuer hendrerit lacus. Cras non dolor.
Vivamus in erat ut urna cursus vestibulum. Fusce commodo aliquam arcu. Nam commodo
suscipit quam. Quisque id odio. Praesent venenatis metus at tortor pulvinar varius.
$ ls -l
total 4
-rw-r--r-- 1 alberto alberto 3197 2009-08-13 14:09 documento.txt

Tenemos un archivo llamado documento.txt de tamaño 3.1 KB, y lo deseamos comprimir para enviarlo por Email a todos nuestros contactos.

$ compress documento.txt
$ ls -l
total 4
-rw-r--r-- 1 alberto alberto 1759 2009-08-13 14:09 documento.txt.Z

Comprimimos el archivo documento.txt y podemos observar que el tamaño del archivo se redujo a 1.7 KB, y observamos que el archivo obtuvo la extensión .Z.

Ahora, si deseamos visualizar nuestro archivo de texto reducido visualizaremos solo caracteres raros. Para evitar este problema empleamos el comando zcat de la siguiente manera:

$ zcat documento.txt.Z
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget
dolor.vAenean massa. Cum sociis natoque penatibus et magnis dis parturient montes,
nascetur ridiculus mus. Donec quam felis, ultricies nec, pellentesque eu, pretium
quis, sem. Nulla consequat massa quis enim. Donec pede justo, fringilla vel, aliquet
nec, vulputate eget, arcu. In enim justo, rhoncus ut, imperdiet a, venenatis vitae,
justo. Nullam dictum felis eu pede mollis pretium. Integer tincidunt. Cras dapibus.
Vivamus elementum semper nisi. Aenean vulputate eleifend tellus. Aenean leo ligula,
porttitor eu, consequat vitae, eleifend ac, enim. Aliquam lorem ante, dapibus
in, viverra quis, feugiat a, tellus. Phasellus viverra nulla ut metus varius laoreet.
Quisque rutrum. Aeneanimperdiet. Etiam ultricies nisi vel augue. Curabitur ullamcorper
ultricies nisi. Nam eget dui.

...

Vivamus laoreet. Nullam tincidunt adipiscing enim. Phasellus tempus. Proin viverra,
ligula sit amet ultrices semper, ligula arcu tristique sapien, a accumsan nisi mauris
ac eros. Fusce neque. Suspendisse faucibus, nunc et pellentesque egestas, lacus ante
convallis tellus, vitae iaculis lacus elit id tortor. Vivamus aliquet elit ac nisl.
Fusce fermentum odio nec arcu. Vivamus euismod mauris. In ut quam vitae odio lacinia
tincidunt. Praesent ut ligula non mi varius sagittis. Cras sagittis. Praesent ac sem
eget est egestas volutpat. Vivamus consectetuer hendrerit lacus. Cras non dolor.
Vivamus in erat ut urna cursus vestibulum. Fusce commodo aliquam arcu. Nam commodo
suscipit quam. Quisque id odio. Praesent venenatis metus at tortor pulvinar varius.

En caso de que deseemos conocer el porcentaje de compresión que obtendremos utilizamos la opción -v.

$ compress -v documento.txt
documento.txt:  -- replaced with documento.txt.Z Compression: 44.97%

Ya comprimimos el archivo y utilizamos el comando zcat para visualizarlo, tal vez el usuario desee obtener el archivo original. Para esto tan solo habrá que descomprimirlo y para esto utilizaremos el comando uncompress de la siguiente manera:

$ uncompress documento.txt.Z
$ ls -l
total 4
-rw-r--r-- 1 alberto alberto 3197 2009-08-13 14:09 documento.txt

Originalmente la compresión de archivos en Unix con compress se utilizaba en archivos planos (antes no existían los archivos PDF) y es por eso que no se pueden comprimir de forma sencilla otros archivos que no seas de texto plano. Sin embargo si es posible utilizando la opción -f para forzar la compresión. Existe el inconveniente de que no se podrán visualizar como lo hicimos con zcat. Para hacerlo habrá de descomprimirlos.

Veamos un ejemplo con un archivo PNG.

$ ls -l
total 4
-rw-r--r-- 1 alberto alberto 1223 2009-08-06 23:05 Estructura.png
$ compress Estructura.png
$ ls -l
total 4
-rw-r--r-- 1 alberto alberto 1223 2009-08-06 23:05 Estructura.png

Ejecutamos el comando compress y no se efectuó la compresión. Ahora utilicemos la opción -f.

$ ls -l
total 4
-rw-r--r-- 1 alberto alberto 1223 2009-08-06 23:05 Estructura.png
$ compress -f Estructura.png
$ ls -l
total 4
-rw-r--r-- 1 alberto alberto 1334 2009-08-06 23:05 Estructura.png.Z

Este modo de compresión de archivos es el más adecuado para archivos de texto o archivos planos, de este modo se pueden visualizar sin la necesidad de descomprimir y comprimir de nuevo.

Posted in

Leave a Reply