Eu queria achar um jeito de renomear todas essas pastas via script,
mas tá dificil, o script sempre esbarra nesses caracteres invalidos.
Eu estou fazendo mais ou menos assim :
for f in `find /local/para/renomear -type d 2>/dev/null` ; do
CUR_FOLDER=`dirname $f`
CUR_BASENAME=`basename "$f"`
# renomeando para minusculo e removendo espacos/caracteres especiais
g=`expr "xxx$g" : 'xxx\(.*\)'|tr '[A-Z]' '[a-z]'|tr ' ' '_'`
g="${g//[:;*?\"<>|]/_}"
if [ "$CUR_BASENAME" != "$g" ] ; then
echo "rename : $f -> $CUR_FOLDER/$g"
# mv "$f" "$CUR_FOLDER/$g"
fi
done
O script tá emperrando nas pastas com caracteres inválidos onde ele
trunca o nome do arquivo na nésima casa onde está o suposto caracter
invalido.
A saída seria o find exibir os caractes de escape do tipo \0345 para
representar a acentuação envolvida, mas parece que o find não tem
parametro para isso.
Alguem conhece alguma solução para este problema ou algum programa que
se propõe a isso ?
> Eu queria achar um jeito de renomear todas essas pastas via script,
> mas tá dificil, o script sempre esbarra nesses caracteres invalidos.
Você poderia fazer um script incluindo o programa convmv ele converte
nomes de diretórios e pastas de uma codificação para outra.
--
Sávio M Ramos
Arquiteto, Rio, RJ
Só uso Linux desde 2000
www.debian.org
--
To UNSUBSCRIBE, email to debian-user-por...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listm...@lists.debian.org
As acentuações me atrapalham de diversas formas, por exemplo, quando
faço backup dos arquivos de unix para unix eles veem que é uma
maravilha, mas se eu fizer o backup no unix e for restaurar no windows
então coisas estranhas as vezes acontecem de voce não conseguir
excluir a pasta por causa do caracter invalido que ele (windows) foi
capaz de reproduzir, mas foi incapaz de gerencia-la. Sem falar nos
backups em DVDs que ficam problemáticos se voce não empacotar tudo num
zip/7z. Outra coisa, meu backup é .tar.gz e crio um indice .txt onde o
usuário varre o .txt com o find do windows e nos passa a localização
da mídia para que possamos restaurar somente este arquivo, mas o
usuário é #$%& e gera os arquivos com acentuações, mas não usa os
mesmos acentos na hora da busca, e se usa, mas tem dois espaços ou
teve um caracter que virou '?' esse arquivo indubitavelmente estará
perdido embora exista.
É por essas e outras razões que gostaria de remover as acentuações de
nomes de arquivos do sistema de arquivos.
2008/9/11 Sávio Ramos <savio...@gmail.com>:
> É por essas e outras razões que gostaria de remover as acentuações de
> nomes de arquivos do sistema de arquivos.
funçoes zz?
Eu estou fazendo mais ou menos assim :
for f in `find /local/para/renomear -type d 2>/dev/null` ; do
CUR_FOLDER=`dirname $f`
CUR_BASENAME=`basename "$f"`
# renomeando para minusculo e removendo espacos/caracteres especiais
g=`expr "xxx$g" : 'xxx\(.*\)'|tr '[A-Z]' '[a-z]'|tr ' ' '_'`
g="${g//[:;*?\"<>|]/_}"
if [ "$CUR_BASENAME" != "$g" ] ; then
echo "rename : $f -> $CUR_FOLDER/$g"
# mv "$f" "$CUR_FOLDER/$g"
fi
done
Peguei o bonde andado, mas as funções ZZ não resolvem isso?
HTH,
--
Davi Vidal
--
E-mail: davi...@siscompar.com.br
MSN : davi...@msn.com
GTalk : davi...@gmail.com
Skype : davi vidal
YIM : davi_vidal
ICQ : 138815296
O script tá terminado, mas descobrí que tenhos dois problemas distintos.
Problema 1) Renomear retirando acentuação dos arquivos, ok, já resolví
isso, o script tá pronto.
Problema 2) Antes de renomear os arquivos é preciso localizar arquivos
cujos nomes está "encodado" iso8859-1 (latin1) e usar o aplicativo
'recode' "ISO-8859-1..UTF-8". Será que existe algum 'find' capaz de
localizar estes tipos de arquivos ?
Nossa arvore de arquivos é enorme, especialmente a área de projetos
cuja profundidade de niveis de diretórios e coisa de outro mundo (será
que toda area de engenharia/arquitetura é assim?)
2008/9/15 Davi Vidal <davi...@siscompar.com.br>:
Nao conheço as funcoes zzz.
O script tá terminado, mas descobrí que tenhos dois problemas distintos.
Problema 1) Renomear retirando acentuação dos arquivos, ok, já resolví
isso, o script tá pronto.
Problema 2) Antes de renomear os arquivos é preciso localizar arquivos
cujos nomes está "encodado" iso8859-1 (latin1) e usar o aplicativo
'recode' "ISO-8859-1..UTF-8". Será que existe algum 'find' capaz de
localizar estes tipos de arquivos ?
Nossa arvore de arquivos é enorme, especialmente a área de projetos
cuja profundidade de niveis de diretórios e coisa de outro mundo (será
que toda area de engenharia/arquitetura é assim?)
O unico comando que descobri via google que pode descobrir a
codificacao de um arquivo é o 'auto_ef', mas ele é para solaris. Mas
se houvesse outro similar eu poderia identificar os arquivos problemas
e fazer o convmv só neles.
[]'s
2008/9/15 Anderson Kaiser <alpk...@gmail.com>:
>
> Olha, do find acredito que não tenha nenhum que possa te ajdar, mas você
> pode utilizar um comando chamado convmv. Ele muda a codificação dos arquivos
> e diretórios:
>
> Um exemplo de utilização do comando:
> # convmv -r -f iso8859-1 -t utf8 /diretorio/* --notest
>
> Ele já foi de grande ajuda para meu sistema de Arquivos Samba aqui, e
> acredito que vá te ajudar bastante. a Opção --notest é para que ele já faça
> diretamente a conversão, e não demore uma eternidade no processo. Mas dê uma
> lida no manual dele que acho que ele poderá te ajudar.
Até onde eu saiba, não é possível determinar com certeza qual a
codificação de um arquivo, e muito menos de um nome de arquivo. O
problema é que quase todos os valores são válidos dentro de quase
todas as codificações. Por exemplo, se pego o nome de arquivo "ação",
já em utf8, e o converto como se estivesse em iso8859-1, terei
"ação". Para o computador, os dois nomes são igualmente válidos. Se
todos os arquivos usarem palavras em português, você poderia tentar
usar um dicionário, mas em geral não é o caso.
Se em cada diretório todos os arquivos tiverem a mesma codificação,
você pode usar um comando como "ls | file", pois o file tem um
algoritmo para tentar encontrar a codificação, baseando-se em certos
caracteres que são inválidos em certas codificações. Se os arquivos
estiverem realmente misturados fica muito difícil, pois a quantidade
de letras em cada arquivo é muito pequena para ter certeza da
codificação.
Tiago.