Discussion:
[shell-script] Rename de arquivos com acentuação
Giovanni Souza giovanni.lm.souza@gmail.com [shell-script]
2017-03-21 19:22:49 UTC
Permalink
Prezados boa tarde,

Estou tentando corrigir um problema em meu script de rename de arquivos com
acentuação, porém estou enfrentando o seguinte problema.

Recebi uma massa nomes de arquivos e csv contendo:
prefixo_nome_arquivo,(delimitador) novo_nome_de_arquivo.

Ex: 4.Arquivo.Arquivo.,4.Arquivo.Arquivo.Apresentação coaracy.ppt

Para renomear muitos arquivos, estou fazendo o script abaixo, porém, quando
um mv ou cp é feito, o novo nome de arquivo contém no final um caracter
especial \r(^M).

Podem me ajudar neste problema ? Testei o sed que realizo jogando para um
arquivo ou variável e o nome não possui este caracter \r.

Muito obrigado,

*Script:*

#!/bin/bash

#Renomear.sh

anexos="/opt/dados/anexos"
#for i in $(seq 2151)
for i in $(seq 1)
do

lista1="$(sed -ne ${i}p renomear.csv |cut -d, -f1)"

procura=$(find $anexos -name ${lista1}*)

lista2=$(sed -ne ${i}p renomear.csv |cut -d, -f2)

cp -vf "$procura" "/var/tmp/$lista2"

done
phfbettega@yahoo.com.br [shell-script]
2017-03-21 20:41:41 UTC
Permalink
Olá Giovanni, não é o renomear.cvs que veio com os ^M no fim de linha?
cat -vet renomear.cvs
Veja se tem ^M$ no fim de linha.
Um dos sed (o lista2?) com s/\r// deve resolver.
Abraços Paulo
Post by Giovanni Souza ***@gmail.com [shell-script]
Prezados boa tarde,
Estou tentando corrigir um problema em meu script de rename de arquivos com acentuação, porém estou
enfrentando o seguinte problema.
Recebi uma massa nomes de arquivos e csv contendo: prefixo_nome_arquivo,(delimitador) novo_nome_de_arquivo.
Ex: 4.Arquivo.Arquivo.,4.Arquivo.Arquivo.Apresentação coaracy.ppt
Para renomear muitos arquivos, estou fazendo o script abaixo, porém, quando um mv ou cp é feito, o novo nome
de arquivo contém no final um caracter especial \r(^M).
Podem me ajudar neste problema ? Testei o sed que realizo jogando para um arquivo ou variável e o nome não
possui este caracter \r.
Muito obrigado,
*Script:*
#!/bin/bash
#Renomear.sh
anexos="/opt/dados/anexos"
#for i in $(seq 2151)
for i in $(seq 1)
do
lista1="$(sed -ne ${i}p renomear.csv |cut -d, -f1)"
procura=$(find $anexos -name ${lista1}*)
lista2=$(sed -ne ${i}p renomear.csv |cut -d, -f2)
cp -vf "$procura" "/var/tmp/$lista2"
done
--------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------
Responder através da web
Alfredo Casanova atcasanova@gmail.com [shell-script]
2017-03-21 20:40:40 UTC
Permalink
tr -d '\r'
Post by Giovanni Souza ***@gmail.com [shell-script]
Prezados boa tarde,
Estou tentando corrigir um problema em meu script de rename de arquivos
com acentuação, porém estou enfrentando o seguinte problema.
prefixo_nome_arquivo,(delimitador) novo_nome_de_arquivo.
Ex: 4.Arquivo.Arquivo.,4.Arquivo.Arquivo.Apresentação coaracy.ppt
Para renomear muitos arquivos, estou fazendo o script abaixo, porém,
quando um mv ou cp é feito, o novo nome de arquivo contém no final um
caracter especial \r(^M).
Podem me ajudar neste problema ? Testei o sed que realizo jogando para um
arquivo ou variável e o nome não possui este caracter \r.
Muito obrigado,
*Script:*
#!/bin/bash
#Renomear.sh
anexos="/opt/dados/anexos"
#for i in $(seq 2151)
for i in $(seq 1)
do
lista1="$(sed -ne ${i}p renomear.csv |cut -d, -f1)"
procura=$(find $anexos -name ${lista1}*)
lista2=$(sed -ne ${i}p renomear.csv |cut -d, -f2)
cp -vf "$procura" "/var/tmp/$lista2"
done
Giovanni Souza giovanni.lm.souza@gmail.com [shell-script]
2017-03-21 21:40:35 UTC
Permalink
Obrigado pessoal, consegui resolver o problema com o comando tr -d '\r'
informado pelo Alfredo. Muito obrigado Alfredo.

Parei em outro problema que já estou a um tempo, um problema que parece ser
a visualização de acentuação no terminal.

./renomear.sh
`/opt/dados/sinapse/anexos_sinapse/4.Arquivo.Arquivo.Apresenta\347\343o
coaracy.ppt' -> `/opt/dados/sinapse/anexos_sinapse/arquivo.out'
`/opt/dados/sinapse/anexos_sinapse/arquivo.out' ->
`/opt/dados/sinapse/anexos_sinapse/4.Arquivo.Arquivo.Apresenta\347\343o
coaracy.ppt'
-rwxr-xr-x 1 sajb6ep sajb6ep 7774208 Oct 19 2012
/opt/dados/sinapse/anexos_sinapse/4.Arquivo.Arquivo.Apresenta??o coaracy.ppt
vmi01415[sajb6ep] /opt/dados/sinapse # ll
'/opt/dados/sinapse/anexos_sinapse/4.Arquivo.Arquivo.Apresenta▒▒o
coaracy.ppt'
-rwxr-xr-x 1 sajb6ep sajb6ep 7774208 Oct 19 2012
/opt/dados/sinapse/anexos_sinapse/4.Arquivo.Arquivo.Apresenta??o coaracy.ppt

Ao invés de aparecer o ç e o acento, aparece dessa maneira.

Achei que fosse locale, mas utilizei os locales abaixo e o problema
continuou:

LANG="en_US.UTF-8"
LANG="en_US.ISO-8859-1"
LANG="en_US.ISO-8859-15"
LANG="pt_BR.ISO-8859-1"
LANG="pt_BR.UTF-8"

Quando manipulo a saída para um arquivo, o ç e o acento é exibido
normalmente ao abrir o arquivo com o vi,vim,view.

Alguma dica ?
Post by Alfredo Casanova ***@gmail.com [shell-script]
tr -d '\r'
Post by Giovanni Souza ***@gmail.com [shell-script]
Prezados boa tarde,
Estou tentando corrigir um problema em meu script de rename de arquivos
com acentuação, porém estou enfrentando o seguinte problema.
Recebi uma massa nomes de arquivos e csv contendo: prefixo_nome_arquivo,(delimitador)
novo_nome_de_arquivo.
Ex: 4.Arquivo.Arquivo.,4.Arquivo.Arquivo.Apresentação coaracy.ppt
Para renomear muitos arquivos, estou fazendo o script abaixo, porém,
quando um mv ou cp é feito, o novo nome de arquivo contém no final um
caracter especial \r(^M).
Podem me ajudar neste problema ? Testei o sed que realizo jogando para um
arquivo ou variável e o nome não possui este caracter \r.
Muito obrigado,
*Script:*
#!/bin/bash
#Renomear.sh
anexos="/opt/dados/anexos"
#for i in $(seq 2151)
for i in $(seq 1)
do
lista1="$(sed -ne ${i}p renomear.csv |cut -d, -f1)"
procura=$(find $anexos -name ${lista1}*)
lista2=$(sed -ne ${i}p renomear.csv |cut -d, -f2)
cp -vf "$procura" "/var/tmp/$lista2"
done
itamarnet@yahoo.com.br [shell-script]
2017-03-22 01:46:12 UTC
Permalink
Caro Giovanni

O arquivo renomear.csv deve ter sido produzido dentro de um ambiente Windows, e está rodando esse script no ambiente linux.

Quem trabalha em ambientes heterogêneos costuma ter esse problema, pois os finais de linha em ambos são diferentes.

No Windows \r\n
No Linux \n
No Mac \r ( ao menos era antes de ter sua base do BSD, não sei se ainda é assim )

E no Windows a codificação é normalmente Latin1, Windows-1252 ou ISO-8859-1.

Já no Mac e Linux é muito comum ser UTF-8, mas pode ser configurado para qualquer codificação

Para esses casos eu costumo converter o arquivo usando " iconv " e " dos2unix " quando disponível, ou o " sed " ou " tr " como os colegas já demostraram.

Por exemplo eu faria antes

iconv -f iso-8859-1 -t utf-8 renomear.csv | tr -d '\r' > renomear-utf.csv

Ou poderia ser " sed '/\r//' " ou " dos2unix " no lugar do " tr " citado

E usaria esse segundo arquivo como base.

O trecho " -f iso-8859-1 " pode ser alterado conforme sua necessidade, mas normalmente esse funciona.

Espero que lhe ajude

[]'s
Itamar
Giovanni Souza giovanni.lm.souza@gmail.com [shell-script]
2017-03-22 11:27:53 UTC
Permalink
Bom dia Itamar,

Na verdade já resolvi o problema do \r com a solução citada anteriormente.

O problema agora é que a visualização dos acentos no terminal estão
quebrados com interrogação ou com um caracter "código de barra" no lugar do
acento ou ç. Conforme exemplo em meu último e-mail.

./renomear.sh
`/opt/dados/sinapse/anexos_sinapse/4.Arquivo.Arquivo.Apresenta\347\343o
coaracy.ppt' -> `/opt/dados/sinapse/anexos_sinapse/arquivo.out'
`/opt/dados/sinapse/anexos_sinapse/arquivo.out' ->
`/opt/dados/sinapse/anexos_sinapse/4.Arquivo.Arquivo.Apresenta\347\343o
coaracy.ppt'
-rwxr-xr-x 1 sajb6ep sajb6ep 7774208 Oct 19 2012 /opt/dados/sinapse/anexos_
sinapse/4.Arquivo.Arquivo.Apresenta??o coaracy.ppt
vmi01415[sajb6ep] /opt/dados/sinapse # ll '/opt/dados/sinapse/anexos_
sinapse/4.Arquivo.Arquivo.Apresenta▒▒o coaracy.ppt'
-rwxr-xr-x 1 sajb6ep sajb6ep 7774208 Oct 19 2012 /opt/dados/sinapse/anexos_
sinapse/4.Arquivo.Arquivo.Apresenta??o coaracy.ppt

Ao invés de aparecer o ç e o acento, aparece dessa maneira.

Achei que fosse locale, mas utilizei os locales abaixo e o problema
continuou:

LANG="en_US.UTF-8"
LANG="en_US.ISO-8859-1"
LANG="en_US.ISO-8859-15"
LANG="pt_BR.ISO-8859-1"
LANG="pt_BR.UTF-8"

Quando manipulo a saída para um arquivo, o ç e o acento é exibido
normalmente ao abrir o arquivo com o vi,vim,view.


Em 21 de mar de 2017 10:46 PM, "***@yahoo.com.br [shell-script]" <
shell-***@yahoogrupos.com.br> escreveu:



Caro Giovanni

O arquivo renomear.csv deve ter sido produzido dentro de um ambiente
Windows, e está rodando esse script no ambiente linux.

Quem trabalha em ambientes heterogêneos costuma ter esse problema, pois os
finais de linha em ambos são diferentes.

No Windows \r\n
No Linux \n
No Mac \r ( ao menos era antes de ter sua base do BSD, não sei se ainda é
assim )

E no Windows a codificação é normalmente Latin1, Windows-1252 ou ISO-8859-1.

Já no Mac e Linux é muito comum ser UTF-8, mas pode ser configurado para
qualquer codificação

Para esses casos eu costumo converter o arquivo usando " iconv " e "
dos2unix " quando disponível, ou o " sed " ou " tr " como os colegas já
demostraram.

Por exemplo eu faria antes

iconv -f iso-8859-1 -t utf-8 renomear.csv | tr -d '\r' > renomear-utf.csv

Ou poderia ser " sed '/\r//' " ou " dos2unix " no lugar do " tr " citado

E usaria esse segundo arquivo como base.

O trecho " -f iso-8859-1 " pode ser alterado conforme sua necessidade, mas
normalmente esse funciona.

Espero que lhe ajude

[]'s
Itamar
Robson Alexandre alexandrerobson@gmail.com [shell-script]
2017-03-22 11:48:01 UTC
Permalink
Bom dia Giovanni,

Acho q a dica do Itamar irá resolver seu problema, visto que esse problema
é típico de codificação.
Faça o teste do iconv para converter o conteúdo do seu arquivo vindo do
Windows.
Qualquer dúvida sobre codificação do arquivo use file --mime-encoding
arquivo,
Ou file --mime-type arquivo
Ou apenas file arquivo para mais informações

Atenciosamente
Robson Alexandre
Post by Giovanni Souza ***@gmail.com [shell-script]
Bom dia Itamar,
Na verdade já resolvi o problema do \r com a solução citada anteriormente.
O problema agora é que a visualização dos acentos no terminal estão
quebrados com interrogação ou com um caracter "código de barra" no lugar do
acento ou ç. Conforme exemplo em meu último e-mail.
./renomear.sh
`/opt/dados/sinapse/anexos_sinapse/4.Arquivo.Arquivo.Apresenta\347\343o
coaracy.ppt' -> `/opt/dados/sinapse/anexos_sinapse/arquivo.out'
`/opt/dados/sinapse/anexos_sinapse/arquivo.out' ->
`/opt/dados/sinapse/anexos_sinapse/4.Arquivo.Arquivo.Apresenta\347\343o
coaracy.ppt'
-rwxr-xr-x 1 sajb6ep sajb6ep 7774208 Oct 19 2012
/opt/dados/sinapse/anexos_sinapse/4.Arquivo.Arquivo.Apresenta??o coaracy.ppt
vmi01415[sajb6ep] /opt/dados/sinapse # ll
'/opt/dados/sinapse/anexos_sinapse/4.Arquivo.Arquivo.Apresenta▒▒o
coaracy.ppt'
-rwxr-xr-x 1 sajb6ep sajb6ep 7774208 Oct 19 2012
/opt/dados/sinapse/anexos_sinapse/4.Arquivo.Arquivo.Apresenta??o coaracy.ppt
Ao invés de aparecer o ç e o acento, aparece dessa maneira.
Achei que fosse locale, mas utilizei os locales abaixo e o problema
LANG="en_US.UTF-8"
LANG="en_US.ISO-8859-1"
LANG="en_US.ISO-8859-15"
LANG="pt_BR.ISO-8859-1"
LANG="pt_BR.UTF-8"
Quando manipulo a saída para um arquivo, o ç e o acento é exibido
normalmente ao abrir o arquivo com o vi,vim,view.
Caro Giovanni
O arquivo renomear.csv deve ter sido produzido dentro de um ambiente
Windows, e está rodando esse script no ambiente linux.
Quem trabalha em ambientes heterogêneos costuma ter esse problema, pois os
finais de linha em ambos são diferentes.
No Windows \r\n
No Linux \n
No Mac \r ( ao menos era antes de ter sua base do BSD, não sei se ainda é assim )
E no Windows a codificação é normalmente Latin1, Windows-1252 ou ISO-8859-1.
Já no Mac e Linux é muito comum ser UTF-8, mas pode ser configurado para
qualquer codificação
Para esses casos eu costumo converter o arquivo usando " iconv " e "
dos2unix " quando disponível, ou o " sed " ou " tr " como os colegas já
demostraram.
Por exemplo eu faria antes
iconv -f iso-8859-1 -t utf-8 renomear.csv | tr -d '\r' > renomear-utf.csv
Ou poderia ser " sed '/\r//' " ou " dos2unix " no lugar do " tr " citado
E usaria esse segundo arquivo como base.
O trecho " -f iso-8859-1 " pode ser alterado conforme sua necessidade, mas
normalmente esse funciona.
Espero que lhe ajude
[]'s
Itamar
--
Atenciosamente

Robson Alexandre
Giovanni Souza giovanni.lm.souza@gmail.com [shell-script]
2017-03-22 16:18:40 UTC
Permalink
Prezados,

Informo que a solução do Itamar e confirmada pelo Robson solucionou o
problema do encode. Segue o resultado:

# iconv -f iso-8859-1 -t utf-8 renomear.csv | tr -d '\r' > renomear-utf.csv

# grep renomear-utf.csv renomear.sh
lista1="$(sed -ne ${i}p renomear-utf.csv |cut -d, -f1)"
lista2=$(sed -ne ${i}p renomear-utf.csv | cut -d, -f2 | tr -d '\r')

# ./renomear.sh
`/opt/dados/sinapse/anexos_sinapse/4.Arquivo.Arquivo.Apresenta\347\343o
coaracy.ppt' -> `/opt/dados/sinapse/anexos_sinapse/arquivo.out'
`/opt/dados/sinapse/anexos_sinapse/arquivo.out' ->
`/opt/dados/sinapse/anexos_sinapse/4.Arquivo.Arquivo.Apresentação
coaracy.ppt'
/opt/dados/sinapse/anexos_sinapse/4.Arquivo.Arquivo.Apresentação coaracy.ppt

# ls /opt/dados/sinapse/anexos_sinapse/4.Arquivo.Arquivo.Apresentação\
coaracy.ppt
/opt/dados/sinapse/anexos_sinapse/4.Arquivo.Arquivo.Apresentação coaracy.ppt

Mais uma vez muito obrigado pela ajuda de todos, vocês são demais.

Forte abraço a todos,

Giovanni Souza
Post by Robson Alexandre ***@gmail.com [shell-script]
Bom dia Giovanni,
Acho q a dica do Itamar irá resolver seu problema, visto que esse problema
é típico de codificação.
Faça o teste do iconv para converter o conteúdo do seu arquivo vindo do
Windows.
Qualquer dúvida sobre codificação do arquivo use file --mime-encoding
arquivo,
Ou file --mime-type arquivo
Ou apenas file arquivo para mais informações
Atenciosamente
Robson Alexandre
Em Qua, 22 de mar de 2017 08:33, Giovanni Souza
Post by Giovanni Souza ***@gmail.com [shell-script]
Bom dia Itamar,
Na verdade já resolvi o problema do \r com a solução citada anteriormente.
O problema agora é que a visualização dos acentos no terminal estão
quebrados com interrogação ou com um caracter "código de barra" no lugar do
acento ou ç. Conforme exemplo em meu último e-mail.
./renomear.sh
`/opt/dados/sinapse/anexos_sinapse/4.Arquivo.Arquivo.Apresenta\347\343o
coaracy.ppt' -> `/opt/dados/sinapse/anexos_sinapse/arquivo.out'
`/opt/dados/sinapse/anexos_sinapse/arquivo.out' ->
`/opt/dados/sinapse/anexos_sinapse/4.Arquivo.Arquivo.Apresenta\347\343o
coaracy.ppt'
-rwxr-xr-x 1 sajb6ep sajb6ep 7774208 Oct 19 2012
/opt/dados/sinapse/anexos_sinapse/4.Arquivo.Arquivo.Apresenta??o coaracy.ppt
vmi01415[sajb6ep] /opt/dados/sinapse # ll '/opt/dados/sinapse/anexos_
sinapse/4.Arquivo.Arquivo.Apresenta▒▒o coaracy.ppt'
-rwxr-xr-x 1 sajb6ep sajb6ep 7774208 Oct 19 2012
/opt/dados/sinapse/anexos_sinapse/4.Arquivo.Arquivo.Apresenta??o coaracy.ppt
Ao invés de aparecer o ç e o acento, aparece dessa maneira.
Achei que fosse locale, mas utilizei os locales abaixo e o problema
LANG="en_US.UTF-8"
LANG="en_US.ISO-8859-1"
LANG="en_US.ISO-8859-15"
LANG="pt_BR.ISO-8859-1"
LANG="pt_BR.UTF-8"
Quando manipulo a saída para um arquivo, o ç e o acento é exibido
normalmente ao abrir o arquivo com o vi,vim,view.
Caro Giovanni
O arquivo renomear.csv deve ter sido produzido dentro de um ambiente
Windows, e está rodando esse script no ambiente linux.
Quem trabalha em ambientes heterogêneos costuma ter esse problema, pois
os finais de linha em ambos são diferentes.
No Windows \r\n
No Linux \n
No Mac \r ( ao menos era antes de ter sua base do BSD, não sei se ainda é assim )
E no Windows a codificação é normalmente Latin1, Windows-1252 ou ISO-8859-1.
Já no Mac e Linux é muito comum ser UTF-8, mas pode ser configurado para
qualquer codificação
Para esses casos eu costumo converter o arquivo usando " iconv " e "
dos2unix " quando disponível, ou o " sed " ou " tr " como os colegas já
demostraram.
Por exemplo eu faria antes
iconv -f iso-8859-1 -t utf-8 renomear.csv | tr -d '\r' > renomear-utf.csv
Ou poderia ser " sed '/\r//' " ou " dos2unix " no lugar do " tr " citado
E usaria esse segundo arquivo como base.
O trecho " -f iso-8859-1 " pode ser alterado conforme sua necessidade,
mas normalmente esse funciona.
Espero que lhe ajude
[]'s
Itamar
--
Atenciosamente
Robson Alexandre
Loading...