hummm....muito obrigado pelas dicas pessoal....principalmente a sua
explicação Wagner....de qualquer forma, ela foi util para mim aprender
um pouco mais sobre find e entender melhor a utilização do
xargs :).....se eu obtiver o sucesso que eu quero no script, eu posto
aqui....abraços...

Renato

On 26 mar, 15:46, Wagner Brasileiro <[email protected]>
wrote:
> 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