Tuesday, January 24, 2017

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

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


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 <path/file_name>.<zip|rar|bz2|gz|tar|tbz2|tgz|Z|7z|xz|ex|tar.bz2|tar.gz|tar.xz>"
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
Código Utilizado:
#!/bin/bash
# function Extract for common file formats

function extract {
if [ -z "$1" ]; then
# display usage if no parameters given
echo "Usage: extract <path/file_name>.<zip|rar|bz2|gz|tar|tbz2|tgz|Z|7z|xz|ex|tar.bz2|tar.gz|tar.xz>"
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
A função é de autoria de Vitalii Tereshchuk.

Available link for download