[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: [FORA DO TOPICO] Ajudinha com script em bash



Em  Thu, 15 Jan 2004 14:51:59 -1000
Marcio de Araujo Benedito <china@pbh.gov.br> escreveu:

> Por necessidade, com meus parcos conheciemntos de shell script, fiz um
> bacalhau para descompactar multiplops arquivos:
> 
> china@localhost:~$ cat /usr/local/bin/descompacta
> #!/bin/bash
> for i in $*
> do
> tar -zxvf $i
> done
> china@localhost:~$
> 
> Entao eu uso
> china@localhost:~$ descompacta /onde/estao/os/arquivos/*
> 
> Sendo que o $* recebe a lista de arquivos apontada no caminho como
> entrada.
> 
> Esta funcionando, so que toda vez que tenho de descompactar arquivos de
> outras extensoes eu tenho de editar o script e trocar o comando. Isso
> ate que nao e problema, mas, ja que fiz a marreta, gostaria de fazer
> algo elegante. Entao pergunto:
> 
> Como fazer com que as entradas em *.zip, *.tar.bz2 e outros formatos
> compactados contidos no mesmo diretorio sejam descompactados ao mesmo
> tempo?
> Tipo: tenho um diretorio contendo:
> 
> arquivo1.tar.gz
> arquivo2.tar.bz2
> arquivo3.zip
> arquivo4.gz
> arquivo5.rar
> 
> seja passado como parametro para o script e ele descompacte todos na
> hora que eu mandar 
> china@localhost:~$ descompacta /diretorio/*
> 
> []'s
> -- 
> Outgoing mail is certified Windows Free.
> Checked by Debian GNU/Linux <http://www.debian.org>.
> 
> "free your computer and your soul will follow..."
> 
Oi Márcio

Poderia ser algo assim:
<script>
#!/bin/bash

NOME=$(/usr/bin/basename $0)

if [ $# != 1 ];then
    echo "Esse programa precisa de 1 argumento!";
    echo "$NOME tar - para arquivos tar";
    echo "$NOME bz2 - para arquivos bz2";
    echo "$NOME zip - para arquivos zip";
    echo "$NOME gz - para arquivos gz";
    echo "$NOME all - para arquivos tar, bz2, zip e gz";
    exit 1;
fi

TIPO=$1

case $TIPO in
    tar) echo "Descompactando tar"; tar xvf *.$TIPO;;
    bz2) echo "Descompactando bz2";tar jxvf *.$TIPO;;
    zip) echo "Descompactando zip";unzip -vf *.$TIPO;;
    gz) echo "Descompactando gz";tar zxvf *.$TIPO;;
    all) for i in tar bz2 zip gz;do
            descompacta.sh $i;
            done;;
    *) echo "Opção inválida! - tente tar,bz2,zip ou gz";;
esac

exit 0
</script>

-- 
 (@_   Leandro Padilha Ferreira - leandro@androle.pro.br
 //\
 V_/_  http://androle.pro.br  	Linux user: #237.744
------------------------------------------
No corra... vuele!



Reply to: