extract () {
if [ -f $1 ] ; then
case $1 in
*.tar.bz2) tar xvjf $1 ;;
*.tar.gz) tar xvzf $1 ;;
*.bz2) bunzip2 $1 ;;
*.rar) rar x $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 ;;
*) echo "don't know how to extract '$1'..." ;;
esac
else
echo "'$1' is not a valid file!"
fi
}
A verdade é que achei essa função um pouco inconveniente. O arquivo não pode ter espaço no nome, trata apenas um arquivo por cada chamada de função e a estrutura não identifica o arquivo caso ele tenha nome com letras maiúsculas (tipo, arquivo *.ZIP).
Assim, fiz algumas modificações e esta está abaixo:
extract() {
for i in "$@"; do
if [ -f "$i" ]; then
case "$i" in
*.[tT][aA][rR].[bB][zZ]|*.[tT][bB][zZ]) tar xjvf "$i" ;;
*.[tT][aA][rR].[bB][zZ]2|*.[tT][bB][zZ]2) tar xjvf "$i" ;;
*.[tT][aA][rR].[gG][zZ]|*.[tT][gG][zZ]) tar xzvf "$i" ;;
*.[gG][tT][gG][zZ]) tar xzvf "$i" ;;
*.[bB][zZ]2) bunzip2 "$i" ;;
*.[rR][aA][rR]) rar x -o+ "$i" ;;
*.[gG][zZ]) gunzip "$i" ;;
*.[tT][aA][rR]) tar xvf "$i" ;;
*.[zZ][iI][pP]) unzip -o "$i" ;;
*.Z) uncompress "$i" ;;
*.7[zZ]) 7z x "$i" ;;
*) echo "don't know how to extract '$i' ..." ;;
esac
else
echo "$i is not a valid file"
fi
done
}
Essa função aceita tantos argumentos quando o bash suporte e identifica a maioria dos problemas de maiúsculas e minúsculas. Além de não apresentar problemas ao manipular arquivos com espaços no nome.
Para usá-la, basta adicionar a mesma no arquivo ~/.bashrc...
Quem tiver sugestões para aprimorar essa função, pode deixar um "oi" pelo comentários...
Nada como um cérebro com disponibilidade de tempo :-)
ReplyDeleteTempo ?
ReplyDeleteEstou a uma semana da minha defesa de doutorado !
Terça que vêm enfrento a banca... definitivamente, não é porque tive tempo que fiz isso, mas para me distrair um pouco ...
Por sinal, o blog serve para que me distraia compartilhando informação ...
Opa Mitre,
ReplyDeleteImaginei que as coisas já estivessem mais calmas com a proximidade da defesa... pelo visto, só após a defesa é que é possível relaxar :-)
Mas vai dar tudo certo!
abs
A corrida termina depois da linha de chegada !
ReplyDeleteMitre, você podeira fazer o favor de postar no pastebin, pois quando colo a indentação não fica legal.
ReplyDeleteFaço melhor (para mim, pelo menos)
ReplyDeleteColoquei o arquivo em formato de texto puro no dropbox e o link (que é público) segue abaixo
http://dl.dropbox.com/u/4917242/blogdomitre/extract
Em breve, todos os meus arquivos de download similares também vão usar o dropbox.
Ótimo Script Realmente útil ! Valeu !
ReplyDelete