você está aqui: Home  → Arquivo de Mensagens

Função para extração de arquivos compactados

Colaboração: Rubens Queiroz de Almeida

Data de Publicação: 02 de fevereiro de 2015

Existem diversos aplicativos para compactação de arquivos. Para cada um deles, o usuário precisa se lembrar da sintaxe e de outros detalhes, para conseguir descompactar os arquivos com sucesso.

Os comandos tar e gzip/gunzip, normalmente são instalados por padrão. Já para outros formatos é preciso instalar o software correspondente, como por exemplo, zip/unzip, rar/unrar, etc.

Para simplificar o processo de descompactação, podemos criar uma função, que realiza a descompactação de forma automatizada, sem a necessidade de nos lembrarmos de sua sintaxe.

Eu dei a este script um nome bem simples e sugestivo, apenas x, de eXtract. Não se esqueça, para tudo funcionar, todos os programas devem ser instalados previamente. Mas podem chamar também de extract.sh.

#!/bin/bash
# function Extract for common file formats

function extract {
 if [ -z "$1" ]; then
    # display usage if no parameters given
    echo "Usage: extract ."
 else
    if [ -f "$1" ] ; then
        # NAME=${1%.*}
        # mkdir $NAME && cd $NAME
        case "$1" in
          *.tar.bz2)   tar xvjf ../"$1"    ;;
          *.tar.gz)    tar xvzf ../"$1"    ;;
          *.tar.xz)    tar xvJf ../"$1"    ;;
          *.lzma)      unlzma ../"$1"      ;;
          *.bz2)       bunzip2 ../"$1"     ;;
          *.rar)       unrar x -ad ../"$1" ;;
          *.gz)        gunzip ../"$1"      ;;
          *.tar)       tar xvf ../"$1"     ;;
          *.tbz2)      tar xvjf ../"$1"    ;;
          *.tgz)       tar xvzf ../"$1"    ;;
          *.zip)       unzip ../"$1"       ;;
          *.Z)         uncompress ../"$1"  ;;
          *.7z)        7z x ../"$1"        ;;
          *.xz)        unxz ../"$1"        ;;
          *.exe)       cabextract ../"$1"  ;;
          *)           echo "extract: '$1' - unknown archive method" ;;
        esac
    else
        echo "'$1' - file does not exist"
    fi
fi
}

extract $1

Download do código

A função é de autoria de Vitalii Tereshchuk.



Veja a relação completa dos artigos de Rubens Queiroz de Almeida