Não li a thread, mas parece que tu quer agir so em arquivos né? Coloque no find a opção "-type f", assim ele so vai retornar se for arquivos, e não diretorios.
-- Flávio do Carmo Júnior aka waKKu 2009/5/13 César Vianna <[email protected]> > > > Segue a evolução do script.. > > #---------------------------------------------------------- > IFS=" > " > while read line > do > cod=`echo "$line"|file -i -|cut -d"=" -f2` > if [ $cod == "iso-8859-1" ] > then > > mv "$line" "$(iconv -f iso-8859-1 -t utf-8 <<< $line)" > fi > done < <(find .) > #---------------------------------------------------------- > > Agora o problema é quando o diretório está em iso-8859-1 e o arquivo dentro > dele está em utf-8 > > Quando isso ocorre, o erro relatado abaixo é reproduzido. > > 2009/5/13 César Vianna <[email protected] <cesar.vianna%40gmail.com>> > > > > Continuando... > > Qual o motivo do erro abaixo? > > ls TomZé-1968/|file -i - > > /dev/stdin: writable, no read permission > > > > *Contexto:* > > > > Estou usando o iconv para corrigir a codificação dos arquivos. Mas, tenho > > que testar qual a codificação atual do arquivo, caso contrário, os > > caracteres especiais ficam corrompidos. > > > > *Exemplo com Resultado Esperado* > > $ ls > > TomZ?-1968 tomz-1968.zip > > > > $ ls |file -i - > > /dev/stdin: text/plain; charset=iso-8859-1 > > > > $ while read line; do echo "$(iconv -f iso-8859-1 -t utf-8 <<< $line)"; > > done < <(ls) > > TomZé-1968 > > tomz-1968.zip > > > > *Exemplo com Resultado Não Desejado* > > > > $ ls > > tomz-1968.zip TomZé-1968 > > > > $ ls |file -i - > > /dev/stdin: text/plain; charset=utf-8 > > > > $ while read line; do echo "$(iconv -f iso-8859-1 -t utf-8 <<< $line)"; > > done < <(ls) > > tomz-1968.zip > > TomZé-1968 > > > > > > *Então, meu script precisa testar se o arquivo está em iso-8859-1 para > > então converter.* > > > > > > > > > > > > 2009/5/12 Reinaldo de Carvalho <[email protected]<reinaldoc%40gmail.com> > > > > > > > >> > >> 2009/5/12 César Vianna > >> <[email protected]<cesar.vianna%40gmail.com><cesar.vianna% > 40gmail.com> > >> >: > >> > *Dúvida direta:* > >> > >> > Como usar o sed para alterar o caracter de codificação inválida que > >> aparece > >> > como "?" e tem código "\372" > >> > Consegui com > >> > tr "\372" "-" <<< $variavel > >> > Queria fazer com sed > >> > > >> > >> Bem, eu não chamaria de codificação inválida, mas de codificação > >> diferente do padrão do seu terminal. > >> > >> while read line; > >> echo mv "$line" "$(iconv -f iso-8859-1 -t utf-8 <<< $line)" > >> done < <(ls) > >> > >> > *Motivo:* > >> > Corrigir nomes de arquivos no Ubuntu > >> > A maioria dos problemas resolvi com o Funções ZZ (zarrumanome) - > >> > http://funcoeszz.net > >> > Só que falta um caracter inválido "?" que não consegui corrigir... > Então > >> > quero inserir na função e ela utiliza sed > >> > > >> > Ex: > >> > 2008-05-30 22:29 N?o S?o Paulo 2 > >> > > >> > > >> > >> A forma mais interessante é via rsync, pesquise no histórico. > >> > >> -- > >> Reinaldo de Carvalho > >> http://korreio.sf.net > >> http://python-cyrus.sf.net > >> > >> > > > > > > > > -- > > César Vianna > > ------------------- > > Prefira o que é positivo e múltiplo; a diferença à uniformidade; o fluxo > às > > unidades; os agenciamentos móveis aos sistemas. > > Gilles Deleuze & Felix Guattari > > > > -- > César Vianna > ------------------- > Prefira o que é positivo e múltiplo; a diferença à uniformidade; o fluxo às > unidades; os agenciamentos móveis aos sistemas. > Gilles Deleuze & Felix Guattari > > [As partes desta mensagem que não continham texto foram removidas] > > > [As partes desta mensagem que não continham texto foram removidas]
