CLI AI

Extraer tar.gz, zip o 7z en Linux con un comando

2026-06-15

tar -xf archive.tar.gz extrae tar, tar.gz, tar.bz2, tar.xz y tar.zst — el tar moderno detecta la compresión por el contenido del archivo, sin necesidad de ningún flag. El otro hábito que te ahorra un desastre es mirar qué hay dentro de un archivo desconocido antes de extraerlo, porque uno sin una carpeta raíz común esparce todo por tu directorio actual.

1. Primero mira qué hay dentro

clai
$ clai muéstrame qué hay en este archivo sin extraerlo→ tar -tf arch.tar.gz | head -4d/d/b/d/b/two-copy.txtd/a/

-t lista el contenido en vez de extraerlo. Si todas las rutas comparten una misma carpeta raíz, el archivo es prolijo. Si la lista muestra rutas como ./file1, ./file2 sin carpeta común, extraerlo esparcirá todo por tu directorio actual.

2. Extraer sin pensar en la compresión

clai
$ clai extrae este archivo→ tar -xf arch.tar.gz

El tar moderno de GNU detecta gzip, bzip2, xz y zstd por el contenido del archivo. Los flags z, j y J solo importan en versiones viejas de tar y al crear un archivo. Un solo comando cubre todos los formatos basados en tar.

3. Extraer en un directorio aparte

clai
$ clai extrae el archivo en una carpeta llamada out→ mkdir -p out && tar -xf arch.tar.gz -C out

-C cambia de directorio antes de extraer. Es también la defensa contra la «bomba de archivo» de la sección 1: incluso sin carpeta común, el desorden termina en out, no debajo de tus pies.

4. Sacar un solo archivo

clai
$ clai extrae solo el archivo d/a/three.txt del comprimido→ tar -xf arch.tar.gz d/a/three.txt

Indica la ruta exactamente como aparece en la salida de tar -tf. No la adivines — cópiala del listado.

5. Otros formatos

clai
$ clai extrae este zip en una carpeta llamada out→ unzip -d out archive.zip

unzip recibe el directorio de salida con -d, no con -C. Para 7z es 7z x archive.7z -oout — sin espacio después de -o, o lo interpretará como nombre de archivo. Cada herramienta inventó su propio flag para lo mismo.

6. Buscar dentro sin extraer

clai
$ clai busca la palabra error en el archivo sin extraerlo→ tar -xzOf logs.tar.gz | grep -n 'error' | head

-O envía el contenido de los archivos a stdout en vez de escribirlo en disco. Para un archivo de logs de varios gigabytes, esa es la diferencia entre hacerlo ya mismo y tener que buscar antes 10 GB de espacio libre.

Trampas habituales

  • El flag f tiene que ir al final del grupo. tar -xfz intenta usar z como nombre de archivo. Escribe tar -xzf o simplemente tar -xf.
  • .tar.gz y .tgz son lo mismo. Igual que .tar.bz2 y .tbz2. La extensión no decide nada — tar mira el contenido.
  • Un archivo con rutas absolutas es peligroso. Si tar -tf muestra rutas que empiezan con /, extraerlo puede sobrescribir archivos del sistema. Extrae ese tipo de archivo solo con -C en un directorio propio, después de revisar el listado.

Preguntas relacionadas

¿Cómo veo el tamaño de los archivos dentro de un archivo comprimido? tar -tvf archive.tar.gz — v añade permisos, propietario, tamaño y fecha.

¿Por qué unzip arruina los nombres con caracteres no ASCII? La codificación de nombres en zip nunca se estandarizó. unzip -O CP866 arregla archivos que vienen de Windows con nombres en cirílico.

¿Cómo extraigo varios archivos a la vez? for f in *.tar.gz; do tar -xf "$f" -C "${f%.tar.gz}"; done, después de crear los directorios.

Ver también

CliAI escribe el comando de extracción correcto para cualquier archivo que le pases, con todos sus flags. Instálalo en una línea.