Compactando / descompactando arquivos (Melhorado)
Publicado por Sandro Marcell 12/07/2007
[ Hits: 5.999 ]
Homepage: http://sanmarcell.wordpress.com
Esta versão melhorada compacta/descompacta arquivos de forma "inteligente", ou seja, ao passar os arquivos para o script, ele irá descobrir o que deve ser compactado e o que deve ser descompactado.
Ex.: script.tcl arq.txt arq.pdf arq.gz arq.tar.bz2 : Os arquivos 'arq.txt e arq.pdf' serão compactados; já os arquivos 'arq.gz e arq.tar.bz2' serão descompactados.
Isso será feito de forma simultânea sem a necessidade de parâmetros extras.
Espero que seja útil!
Falou!!!
#!/usr/bin/tcl # # Compacte/descompacte vários arquivos simultaneamente. # # Autor: Sandro Marcell (sandro_marcell@yahoo.com.br) # # Uso: nome_script arquivo1 [arquivoN] # É possível o uso do metacarectere (*) # # Obs.: São necessários os programas: tar, gzip e bzip2. # # Boa Vista - Roraima, 27/06/2007. # Checando parâmetros: if {$argc == 0} { puts stderr "Uso: [file tail $argv0] arquivo1 \[arquinoN\]" exit } # Simples avisos: proc Aguarde {} { puts stdout "Descompactando..." sleep 1 } proc Aguarde2 {} { puts stdout "Compactando..." sleep 1 } set SUCESSO "Arquivo descompactado!" set ERRO "-> Erro de entrada/saída." # Início do loop: foreach A $argv { # Testes condicionais: if {![file exists $A]} { puts stderr "-> Arquivo não encontrado." continue } elseif {![file owned $A]} { puts stderr "-> Sem permissão de acesso." continue } # Compactar ou descompactar? switch -glob $A { # Descompactando... *.tar.gz { Aguarde if {[catch {exec tar -xzf $A}] == 0} { puts stdout $SUCESSO } else { puts stderr $ERRO } } *.gz { Aguarde if {[catch {exec gunzip $A}] == 0} { puts stdout $SUCESSO } else { puts stderr $ERRO } } *.tar.bz2 { Aguarde if {[catch {exec tar -xjf $A}] == 0} { puts stdout $SUCESSO } else { puts stderr $ERRO } } *.bz2 { Aguarde if {[catch {exec bunzip2 $A}] == 0} { puts stdout $SUCESSO } else { puts stderr $ERRO } } default { # Compactando... if {[file isdirectory $A]} { Aguarde2 if {[catch {exec tar -cjf $A.tar.bz2 $A}] == 0} { puts stdout "Diretório compactado!" } else { puts stderr $ERRO } } if {[file isfile $A]} { Aguarde2 if {[catch {exec bzip2 -zfk9 $A}] == 0} { puts stdout "Arquivo compactado!" } else { puts stderr $ERRO } } } } continue } # Fim =)
Compactando arquivos e diretórios simultâneamente
Convertendo escalas termométricas
Simples visualizador de arquivos texto
Atenção a quem posta conteúdo de dicas, scripts e tal (6)
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
O mínimo que você precisa saber sobre o terminal (parte 2)
O mínimo que você precisa saber sobre o terminal (parte 1)
Como iniciar uma máquina virtual do VirtualBox automaticamente no boot do LUbuntu 18 LTS
Mudar o gerenciador de login (GDM para SDDM e vice-versa) - parte 2
Como deixar as abas do Firefox mais fininhas
Mudar o gerenciador de login (GDM para SDDM)
"Tentando" fazer com que programas rodem no Wayland e no X11
Porblema com MergeList [RESOLVIDO] (10)
Melhor hospedagem em nuvem para projetos Laravel com baixo custo? [RES... (7)
Como baixar os drivers de áudio no linux mint? (7)
Como posso localizar o arquivo HTML da página inicial do GLPI dentro d... (2)
[Python] Automação de scan de vulnerabilidades
[Python] Script para analise de superficie de ataque
[Shell Script] Novo script para redimensionar, rotacionar, converter e espelhar arquivos de imagem
[Shell Script] Iniciador de DOOM (DSDA-DOOM, Doom Retro ou Woof!)
[Shell Script] Script para adicionar bordas às imagens de uma pasta