Se o problema é só no nome dos arquivos ou diretórios dá para fazer todos de uma vez com o convmv.
Estando como root use o comando:
apt-get install convmv
o comando para renomear um diretório inteiro, recursivamente é:
convmv -f iso8859-1 -t utf8 -r --notest nome_do_diretorio
Já no caso de problemas de acentuação dentro dos arquivos. Podemos usar o recode para corrigir isto:
como root instale o recode com os comandos (estando conectado na internet, é claro):
apt-get install recode
o comando para o recode é:
recode iso8859-1..utf-8 nomedoarquivo
Para alterar a codificação de todos os arquivos de um diretório como, por exemplo, os scrips do Morimoto que estão em /usr/local/bin, você pode usar o script abaixo:
#!/bin/bash
# comando do script:
# iso2utf.sh diretorio
#script escrito por FranciscoLima faclsp@gmail.com
#verifica se o recode está instalado
if test -e /usr/bin/recode
then > /dev/null
else echo -e "\nATENÇÃO: Este script necessita do Recode instalado."
echo -e "Use \"#apt-get install recode\" para instalá-lo\n"
exit 2
fi
# testa se foi indicado um parâmetro
if [ $# -eq 0 ]
then
echo "ERRO: especifique o nome da pasta com os arquivos a serem convertidos!"
exit 1
fi
<pre><code>
# faz uma cópia do diretório. Só por segurança
echo -e "\nCopiando diretório $1 para $1-becape, só por segurança\n"
cp -r $1 $1-becape
# acessa diretório com os arquivos a serem convertidos
cd $1
# cria lista de todos os arquivos que serão convertidos
lista=`find -type f`
# executa conversão
for i in $lista
do
echo "convertendo... $i"
#transforma o arquivo em iso, caso não seja, para evitar erro do utf sendo passado 2 vezes
recode utf-8..iso8859-1 $i 2> /dev/null
#recodifica realmente
recode iso-8859-1..utf-8 $i
done
if [ $? == 0 ]
then
echo -e "\nConversão terminada com sucesso!\n"
fi
copie e salve o arquivo com o nome iso2utf.sh
dê permissões de execução e use com o comando
./iso2utf.sh nome_do_diretorio