renomear pastas com caracteres invalidos.
Tenho em meu sistema várias pastas com nomes assim
'capela-a�o-inox-316', no local do 'ç', simplesmente um '?' e não
consigo renomea-la via terminal com o find.
Isso ocorreu na época em que migramos do NT->Samba e depois do ISO
Latin1 para UTF8. Então só os arquivos muito antigos sofrem desse
problema.
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 ?
Reply to: