CLI AI

Extrair tar.gz, zip ou 7z no Linux com um comando

2026-06-15

tar -xf archive.tar.gz extrai tar, tar.gz, tar.bz2, tar.xz e tar.zst — o tar moderno detecta a compressão pelo conteúdo do arquivo, sem precisar de nenhuma flag. O outro hábito que evita bagunça é olhar o que tem dentro de um arquivo desconhecido antes de extrair, porque um sem pasta raiz em comum espalha tudo pelo seu diretório atual.

1. Primeiro veja o que tem dentro

clai
$ clai mostra o que tem dentro desse arquivo sem extrair→ tar -tf arch.tar.gz | head -4d/d/b/d/b/two-copy.txtd/a/

-t lista o conteúdo em vez de extrair. Se todos os caminhos compartilham uma pasta de nível superior, o arquivo está bem organizado. Se a listagem mostrar caminhos como ./file1, ./file2 sem pasta em comum, extrair vai espalhar tudo pelo seu diretório atual.

2. Extrair sem pensar no tipo de compressão

clai
$ clai extrai esse arquivo→ tar -xf arch.tar.gz

O tar moderno do GNU detecta gzip, bzip2, xz e zstd pelo conteúdo do arquivo. As flags z, j e J só importam em versões antigas do tar e na hora de criar um arquivo. Um único comando cobre todos os formatos baseados em tar.

3. Extrair em uma pasta separada

clai
$ clai extrai o arquivo para uma pasta chamada out→ mkdir -p out && tar -xf arch.tar.gz -C out

-C muda de diretório antes de extrair. É também a defesa contra a «bomba de arquivo» da seção 1: mesmo sem pasta em comum, a bagunça cai em out, não debaixo dos seus pés.

4. Extrair um único arquivo

clai
$ clai extrai só o arquivo d/a/three.txt do pacote→ tar -xf arch.tar.gz d/a/three.txt

Informe o caminho exatamente como aparece na saída de tar -tf. Não tente adivinhar — copie da listagem.

5. Outros formatos

clai
$ clai extrai esse zip para uma pasta chamada out→ unzip -d out archive.zip

O unzip recebe o diretório de saída com -d, não com -C. Para 7z é 7z x archive.7z -oout — sem espaço depois do -o, senão ele lê como nome de arquivo. Cada ferramenta inventou sua própria flag pra mesma ideia.

6. Buscar dentro sem extrair

clai
$ clai procura a palavra error no arquivo sem extrair→ tar -xzOf logs.tar.gz | grep -n 'error' | head

-O manda o conteúdo dos arquivos para a saída padrão em vez de gravar no disco. Para um arquivo de logs de vários gigabytes, essa é a diferença entre fazer na hora e ter que achar 10 GB de espaço livre antes.

Pegadinhas

  • A flag f tem que vir por último no grupo. tar -xfz tenta usar z como nome de arquivo. Escreva tar -xzf ou simplesmente tar -xf.
  • .tar.gz e .tgz são a mesma coisa. Assim como .tar.bz2 e .tbz2. A extensão não decide nada — o tar olha o conteúdo.
  • Um arquivo com caminhos absolutos é perigoso. Se tar -tf mostrar caminhos começando com /, extrair pode sobrescrever arquivos do sistema. Extraia esse tipo de arquivo só com -C para um diretório próprio, depois de conferir a listagem.

Perguntas relacionadas

Como vejo o tamanho dos arquivos dentro de um pacote? tar -tvf archive.tar.gz — v adiciona permissões, dono, tamanho e data.

Por que o unzip bagunça nomes com caracteres não ASCII? A codificação de nomes no zip nunca foi padronizada. unzip -O CP866 conserta arquivos vindos do Windows com nomes em cirílico.

Como extraio vários arquivos de uma vez? for f in *.tar.gz; do tar -xf "$f" -C "${f%.tar.gz}"; done, depois de criar os diretórios.

Veja também

O CliAI escreve o comando certo de extração para qualquer arquivo que você jogar pra ele, com todas as flags. Instale em uma linha.