Compactando / descompactando arquivos (Melhorado)
Publicado por Sandro Marcell 12/07/2007
[ Hits: 6.243 ]
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
Compactando arquivos e diretórios simultâneamente
Criando uma simples lixeira para o usuário [Melhorado]
IA Turbina o Desktop Linux enquanto distros renovam forças
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Linux em 2025: Segurança prática para o usuário
Desktop Linux em alta: novos apps, distros e privacidade marcam o sábado
IA chega ao desktop e impulsiona produtividade no mundo Linux
Atualizando o Fedora 42 para 43
Como saber se o seu e-mail já teve a senha vazada?
Como descobrir se a sua senha já foi vazada na internet?
Preciso recuperar videos *.mp4 corrompidos (4)
\Boot sem espaço em disco (Fedora KDE Plasma 42) (7)
Secure boot, artigo interessante, nada técnico. (1)









