1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Renomear extensao de multiplos ficheiros em Shell Script

Discussão em 'Programação' iniciada por Conde, 3 de Julho de 2007. (Respostas: 9; Visualizações: 1665)

  1. Conde

    Conde Power Member

    Boas,

    Tenho cerca de 500 ficheiros com a extensao ".gif;380137" e quero renomea-los a todos para ".gif" , já andei a fazer um script, mas como nao estou muito dentro da linguagem nao tou a conseguir, alguem me pode ajudar? Já agora estou a fazer isto em CLI de Mac OS.

    Código:
    #! /bin/sh
    
    for f in *".gif;380137"; do
    base=`basename $f .gif`
    mv $f $base.gif
    done
    
    O script está apenas a acrescentar ".gif" no final do ficheiro, e não é bem isto que me interessa. Uma mãozinha?

    Desde já obrigado!
     
  2. Rui_Carlos

    Rui_Carlos 1st Folding then Sex

    isto deve ajudar...

    Código:
    newname=`echo $f | sed "s/\(.*\.gif\);380137/\1/g"`
    mv $f $newname
     
    Última edição: 3 de Julho de 2007
  3. Conde

    Conde Power Member

    Tentei isso e dame erro no comando mv, diz que os parametros nao estao correctos :\
     
  4. Rui_Carlos

    Rui_Carlos 1st Folding then Sex

    tem um '$' a mais antes do 'newname' (na primeira linha).
     
  5. Conde

    Conde Power Member

    lol agora deu, mas os ficheiros desapareceram todos e fiquei com um ficheiro newname na pasta... :lol:
     
  6. Rui_Carlos

    Rui_Carlos 1st Folding then Sex

    por acaso não fizeste mv $f newname pois não?
    era só para tirar o '$' na primeira linha (vê o meu primeiro post, penso que como está já funciona).


    PS: espero que tenhas backup dos ficheiros...
     
  7. Conde

    Conde Power Member

    Pois percebi mal e foi isso mesmo que fiz lool. Mas no prob, tenho backup em casa dos ficheiros. assim que chegar volto a tentar o script. Thanks ;)
     
  8. slack_guy

    slack_guy Power Member

    ... e se usares zsh:

    Código:
    [FONT=monospace]for i in *.[/FONT]gif\;380137; do mv $i ${i:r}.gif; done
    
     
  9. PrOdG

    PrOdG Power Member

    Em bash:
    Código:
    #!/bin/sh
    
    for i in *.gif\;380137 ;
    do
            mv $i ${i%;380137}
    done
    
    ;)
     
  10. Conde

    Conde Power Member

    problema resolvido! muito obrigado a todos :)
     

Partilhar esta Página