shell-script-pt
[Top][All Lists]
Advanced

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

Re: [shell-script] Conversão de nome de arquivos.


From: Marcelo Andrade
Subject: Re: [shell-script] Conversão de nome de arquivos.
Date: Wed, 11 Jan 2012 08:45:23 -0300

On Tuesday, January 10, 2012, Alysson Gonçalves de Azevedo wrote:
>
>  Pessoal, a muito tempo eu tenho pelejado com o seguinte problema.
> Eu costumo baixar muitos arquivos compactados, e sempre que algum arquivo
> dentro dos .rar tem algum caracter especial, seja ç ou alguma letra
> acentuada, quando eu extraio esse arquivo, ele vem com codificação
> inválida.
>
> por exemplo, descompactar, o arquivo aparece assim no nautilus
> "Continua��o.jpg (codificação inválida)", e no terminal "Continua??o.jpg".
> Até hj eu estive corrigindo tudo manualmente... Mas agora eu criei vergonha
> na cara e decidi montar um script para resolver isso.
>
> Com base nesse artigo<
> http://www.vivaolinux.com.br/dica/Renomeando-arquivos-Codificacao-Invalida-e-um-Bonus
> >e
> nesse
> outro <http://blog.welrbraga.eti.br/?p=440>, eu consegui fazer aparecer o
> meu script no menu do contexto e ao clicar, ele corrigi tudo.
> Segue o código (também postado no pastbin <http://pastebin.com/Ybn63QBN>):
>
> > #!/bin/bash
> > OLDIFS=${IFS}
> > IFS="
> > "
> > for arquivo in ${NAUTILUS_SCRIPT_SELECTED_FILE_PATHS}; do
> > convmv -r -f cp850 -t utf8 --notest $arquivo
> > done
> > IFS=${OLDIFS}
>
Parabéns e obrigado por contribuir!

> Até agora ele tem funcionado bem, mas tem uma coisa que eu me pergunto...
> No scritp, eu to usando o cp850 como codificação base.
> Mas isso é certo? Não tenho certeza se sempre será ele ou se pode acontecer
> de ter win1252 ou iso8859-1.
>
> Pelo que vi, o comando "file -i arquivo" retorna o charset para arquivos
> textos, mas para arquivos tipo imagens, retorna "charset=binary".
> Alguém sabe me confirmar se está tudo bem deixar cp850... ou melhor, uma
> forma de detectar a codificação do arquivo automaticamente?
>
Detectar a codificação?  Desconheço que exista uma maneira confiável
de fazer isso, até por que, salvo engano, a cp850 é compatível com a
win1252 e para uma detecção acurada o arquivo provavelmente teria
que ter todo o conjunto de caracteres suportado.

Pesquisando agora, vi que em PHP tem um método mb_detect_encoding
(http://us3.php.net/manual/en/function.mb-detect-encoding.php) que diz
qual o encoding mais próximo dentro de uma lista de opções.  Você poderia
utilizar PHP em shell usando o shebang /usr/bin/php.

Boa sorte!



-- 
MARCELO F ANDRADE
Belem, Amazonia, Brazil

"I took the red pill"


[As partes desta mensagem que não continham texto foram removidas]



reply via email to

[Prev in Thread] Current Thread [Next in Thread]