Renato, para trabalhar recursivamente, estive olhando e a melhor opção será
realmente o comando find -type f pois ele só pega arquivos e com isso evita
que precisemos tratar a exclusão dos diretórios pais e outros lixos, bem
como os paths, que no caso do find, já pode ser utilizado direto no comando
MV ou CP como argumento. Só retificaria uma coisa, no exemplo do Jimmy, não
sei se vcs sabem mas as opções EXEC e OK do FIND não suportam muitos
argumentos, caso contrário ela vai dar a mensagem: "Too many arguments",
para evitar isso use o comando XARGS da seguinte maneira: "comando FIND"|
xargs -i rm {] {}$seq. Onde $seq pode ser: seq=`find ./ -type f -regex [sua
regex]| wc -c` que vai lhe dar o número total de arquivos nesta condição, e
as chaves no comando XARGS assim como no comando FIND são os índices
ecnotrados por ele, seria legal utilizar um TR em cima da segundo par de
chaves para retirar os caracteres estranhos, mas não sei se o TR os trocará
de uma unica vez, caso cntrário teria que colocar essa linha dentro de um
loop e ir mudando cada arquivo destes caracter por caracter até que nenhum
atend aamis a condição da ER.

Espero não ter complicado muito, qq dúvida é só perguntar.




2009/3/25 jimmy <[email protected]>

>
> On Tue, Mar 24, 2009 at 12:59:12PM -0700, renator wrote:
> >
> > esses tipos de caracteres: ñß¢Ð£Øø§µÝý¥¹²³ por exemplo.
> >
> > Consegui adaptar um script, para alterar nomes com esses tipos de
> > caracteres para hifen, mas nao consegui configurar o script para
> > trabalhar recursivamente. Atualmente, o script esta desta forma:
> >
> > for f in *; do
> >     new=`echo $f | tr "àá|âãäåèéêëìíîïòóôõöùúûüçñß¢Ð£Øø§µÝý¥¹²³~?
> > áÁéÉíÍóÓúÚâÂêÊôÔãÃõÕàÀòÒâð£þ®§ü" "-"`
> >     if [ "$f" != "$new" ]; then
> >         mv "$f" "$new"
> >     fi
> > done
> >
> >
> > Se alguem puder me ajudar a fazer o script trabalhar recursivamente ou
> > tiver outra sugestão, eu agradeço.
> >
> > []'s,
> > Renato
>
> assumi que os caracteres em questão são os não ascii 7 (man ascii)
> e que você precisa trocá-los por hífen, dessa forma você pode fazer
> algo parecido com este 1liner:
>
> find ./ -type f -regex '.*[^ -~].*' -exec sh -c 'new=`echo "{}" | tr -c "[
> -~\n]" -`; echo mv -i "{}" $new' \;
>
> mas atente para o fato de que ao renomear os caracteres para "-" você
> pode acabar sobrescrevendo arquivos que passariam a ficar com nomes
> iguais.
>
>
> --
> "Não manejo bem as palavras
> Mas manipulo bem as strings."
> ------------------------------
>
> >
>

--~--~---------~--~----~------------~-------~--~----~
GUS-BR - Grupo de Usuários de Slackware Brasil
http://www.slackwarebrasil.org/
http://groups.google.com/group/slack-users-br

Conheça o Novo Forum do GUS-BR na Under-Linux.Org em:
http://under-linux.org/forums/slackware/
-~----------~----~----~----~------~----~------~--~---

Responder a