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/ -~----------~----~----~----~------~----~------~--~---

