Compactando / descompactando arquivos (Melhorado)
Publicado por Sandro Marcell 12/07/2007
[ Hits: 6.296 ]
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 =)
Convertendo escalas termométricas
Criando uma simples lixeira para o usuário [Melhorado]
Compactando arquivos e diretórios simultâneamente
Cirurgia para acelerar o openSUSE em HD externo via USB
Void Server como Domain Control
Modo Simples de Baixar e Usar o bash-completion
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
Jogar games da Battle.net no Linux com Faugus Launcher
Como fazer a Instalação de aplicativos para acesso remoto ao Linux
Como fazer a instalação do Samba
Como fazer a conversão binária e aplicar as restrições no Linux
Duas Pasta Pessoal Aparecendo no Ubuntu 24.04.3 LTS (19)
Formas seguras de instalar Debian Sid (13)
Malware encontrado em extensões do Firefox. (0)
Fiz uma pergunta no fórum mas não consigo localizar [RESOLVIDO] (21)









