Compactando / descompactando arquivos (Melhorado)
Publicado por Sandro Marcell 12/07/2007
[ Hits: 6.073 ]
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 =)
Simples visualizador de arquivos texto
Compactando arquivos e diretórios simultâneamente
Convertendo escalas termométricas
Criando uma simples lixeira para o usuário [Melhorado]
Passkeys: A Evolução da Autenticação Digital
Instalação de distro Linux em computadores, netbooks, etc, em rede com o Clonezilla
Título: Descobrindo o IP externo da VPN no Linux
Armazenando a senha de sua carteira Bitcoin de forma segura no Linux
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Instalando Brave Browser no Linux Mint 22
vídeo pra quem quer saber como funciona Proteção de Memória:
Encontre seus arquivos facilmente com o Drill
Mouse Logitech MX Ergo Advanced Wireless Trackball no Linux
Compartilhamento de Rede com samba em modo Público/Anônimo de forma simples, rápido e fácil
Programa duplicado no "Abrir com" e na barra de pesquisa do ... (1)
VMs e Interfaces de Rede desapareceram (13)
Como abrir o pycharm no linux [RESOLVIDO] (4)