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

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

Re: [shell-script] Identificar nome de arquivos com acentuação do Window


From: João Olavo Baião de Vasconcelos
Subject: Re: [shell-script] Identificar nome de arquivos com acentuação do Windows
Date: Mon, 16 Dec 2013 11:25:13 -0200

Julio,

Aqui na capital tá td calmo! O resto do estado que tá ruim, como em diversas cidades do país. =/

Vou ficar na ideia do iconv mesmo. Eu tb não posso fazer mv dos arquivos, os usuários mesmos que tem que fazer. Só iremos alertá-los.

Obrigado!! Abraços!!


2013/12/16 Julio C. Neves <address@hidden>
 

Fala João,
as chuvas por aí pararam de fazer estrago?

Usando o exemplo que vc mandou, fiz o seguinte:

$ paste -d/ <(sed 's/_/\n/g' <<< 'M-a_M-A_M-`_M-@_M-b_M-B_M-c_M-g_M-G_M-i_M-I') <(sed 's/_/\n/g' <<< á_Á_à_À_â_Â_ã_ç_Ç_é_É) | xargs -i echo sed \'s/{}/g\'
sed 's/M-a/á/g'
sed 's/M-A/Á/g'
sed 's/M-`/à/g'
sed 's/M-@/À/g'
sed 's/M-b/â/g'
sed 's/M-B/Â/g'
sed 's/M-c/ã/g'
sed 's/M-g/ç/g'
sed 's/M-G/Ç/g'
sed 's/M-i/é/g'
sed 's/M-I/É/g'

Se a saída desse cmd fosse redirecionada para, digamos, arq_sed e vc fizesse:

sed -f arq_sed <(ls) > arqs_editados

e depois fizesse:

paste <(ls) arq_editados | xargs -L1 mv

Acho que funcionaria. Mas se vc conseguir fazer pelo iconv, é melhor.

Infelizmente meu conhecimento de M$ é cada dia menor e por isso não posso te ajudar tanto quanto vc merece.

​Grande abraço para vc extendendo aos meus amigos daí
,

Julio
@juliobash
Facebook!? Not even if a cow coughs...
​ ;)​

Posso dar treinamento Shell em qualquer parte do país.
Me mande um e-mail para saber detalhes ou
echo 618921594007727281449002107776021103258914797578P | dc



Em 16 de dezembro de 2013 11:55, João Olavo Baião de Vasconcelos <address@hidden> escreveu:
 

Olá Julio!!

Não poderia dar cat no arquivo em si, pois não me interessa seu conteúdo, mas sim o nome do arquivo. Segue então um "cat -vet" no nome de um arquivo:

Nome dos arquivos (visão Windows):
poção de átomos.txt
x_á_Á_à_À_â_Â_ã_ç_Ç_é_É.txt

No Linux:
$ ls
po??o de ?tomos.txt
x_?_?_?_?_?_?_?_?_?_?_?.txt
$ ls | cat -vet
poM-gM-co de M-atomos.txt$
x_M-a_M-A_M-`_M-@_M-b_M-B_M-c_M-g_M-G_M-i_M-I.txt$

O -vet interpreta então como sendo esses "M-", bem variado.

Aí eu pensei em fazer usando o iconv:

$ saida="$(ls)"
$ saida_iconv="$(ls | iconv -f latin1 -t utf8)"

$ echo "$saida"
po��o de �tomos.txt
x_�_�_�_�_�_�_�_�_�_�_�.txt

$ echo "$saida_iconv"
poção de átomos.txt
x_á_Á_à_À_â_Â_ã_ç_Ç_é_É.txt

$ [ "$saida" == "$saida_iconv" ] || echo 'WINDOWS ALERT!!!'
WINDOWS ALERT!!!


Acredito que vá funcionar utilizando essa ideia de comparar com a saida do iconv.




2013/12/14 Julio C. Neves <address@hidden>
 

Fala João,
como vc sabe, estou longe de ser um especialista em rWin e no meu trampo essa aberração está praticamente extinta e por isso fica complicado de testar o que irei propor.

Eu tentaria montar um arquivo com todas as representações de cedilha, acentos, ... geradas pelo cat -vet e outro com as substituições necessárias do sed. Depois faria:

cat -vet arquivo/que/veio/do/rwin | grep -f arquivo/representacoes/estranhas || exit
sed -fi.veio arquivo/com/as/substituicoes/do/sed arquivo/que/veio/do/rwin

Se não deu certo, o arquivo antigo estará salvo em arquivo/que/veio/do/rwin.veio



Abcs,
Julio
@juliobash
Facebook!? Not even if a cow coughs...
;)

Posso dar treinamento Shell em qualquer parte do país.
Me mande um e-mail para saber detalhes ou
echo 618921594007727281449002107776021103258914797578P | dc



Em 13 de dezembro de 2013 13:11, João Olavo Baião de Vasconcelos <address@hidden> escreveu:

 

Pessoal,

Temos uma aplicação que roda no Windows, mas submete execuções para serem feitas no Linux.

O usuário de vez em quando cria um diretório ou arquivo cujo nome contém cedilha, acentos, til, etc., mas ele faz isso a partir do Windows.

Aí, devido à codificação diferente do Windows (caracteres não UTF-8, mas sim latin-1, se não me engano), isso faz com que a execução no Linux falhe, pois o arquivo acaba não sendo identificado.

Gostaria de fazer um script para botar no cron e ficar vigiando se o nome de algum diretório ou arquivo criado contém caracteres não UTF-8, mas não consegui identificar uma maneira.

Alguma dica?

Obrigado!
--
João Olavo Baião de Vasconcelos
Analista de Sistemas - Infraestrutura





--
João Olavo Baião de Vasconcelos
Analista de Sistemas - Infraestrutura





--
João Olavo Baião de Vasconcelos
Analista de Sistemas - Infraestrutura

reply via email to

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