+ Responder ao Tópico



  1. #1
    Visitante

    Padrão Duvida em shell

    Pessoal,

    Preciso vasculhar recursivamente um diretorio(pegar todos os arquivos e subdiretorios) e rodar um script em cada subdiretorio que ele entra. Esse script que eu quero executar tem varios ifs qie testam os caracteres estranhos gerados nos nomes de arquivos gracas a uma rateada colossal minha, e corrige para os acentos corretamente.

    Podemos trocar, voces me conseguem a funcao de recursividade e eu publico pra todo mundo o arquivo .sh completo, e jah vai sanear a duvida de muitos!

  2. #2

    Padrão Duvida em shell

    bom com o comando tree vc consegue pegar a arvore de diretorios, to sem ele aki pra pegar a sintaxe dele certinha, suponha q seja tree -d, o script ficaria

    for dir in `tree -d`; do
    cd $dir; seu comando
    done

    aaaa o ls tb da pra usar recursividade com ls -R

  3. #3
    Visitante

    Padrão Uhu!!!

    Thkz a Lot!!! Pois aqui esta, na integra, um script para renomear arquivos truncados, com carcteres estranhos, e seus respectivos acentos e caracteristicas, como eu eu prometi! O script nao eh todo meu, eu adaptei um que eu achei perdido na internet(desculpa, mas se soubesse de quem eh divulgaria na boa!)

    #!/bin/bash

    SING=1
    numero=0
    ENC=0

    for nome_arquivo in *
    do
    echo "$nome_arquivo" | grep -q "á"
    if [ $? -eq $ENC ]
    then
    fname=$nome_arquivo
    n=`echo $fname | sed -e "s/á/á/g"`
    mv "$fname" "$n"
    let "numero += 1"
    fi
    done

    if [ "$numero" -eq "$SING" ]
    then
    echo "$numero arquivo renomeado."
    else
    echo "$numero arquivos renomeados."
    fi SING=1
    numero=0
    ENC=0

    for nome_arquivo in *
    do
    echo "$nome_arquivo" | grep -q "ç"
    if [ $? -eq $ENC ]
    then
    fname=$nome_arquivo
    n=`echo $fname | sed -e "s/ç/ç/g"`
    mv "$fname" "$n"
    let "numero += 1"
    fi
    done

    if [ "$numero" -eq "$SING" ]
    then
    echo "$numero arquivo renomeado."
    else
    echo "$numero arquivos renomeados."
    fi SING=1
    numero=0
    ENC=0

    for nome_arquivo in *
    do
    echo "$nome_arquivo" | grep -q "çõ"
    if [ $? -eq $ENC ]
    then
    fname=$nome_arquivo
    n=`echo $fname | sed -e "s/çõ/çõ/g"`
    mv "$fname" "$n"
    let "numero += 1"
    fi
    done

    if [ "$numero" -eq "$SING" ]
    then
    echo "$numero arquivo renomeado."
    else
    echo "$numero arquivos renomeados."
    fi
    SING=1
    numero=0
    ENC=0

    for nome_arquivo in *
    do
    echo "$nome_arquivo" | grep -q "çã"
    if [ $? -eq $ENC ]
    then
    fname=$nome_arquivo
    n=`echo $fname | sed -e "s/çã/çã/g"`
    mv "$fname" "$n"
    let "numero += 1"
    fi
    done

    if [ "$numero" -eq "$SING" ]
    then
    echo "$numero arquivo renomeado."
    else
    echo "$numero arquivos renomeados."
    fi SING=1
    numero=0
    ENC=0

    for nome_arquivo in *
    do
    echo "$nome_arquivo" | grep -q "ê"
    if [ $? -eq $ENC ]
    then
    fname=$nome_arquivo
    n=`echo $fname | sed -e "s/ê/ê/g"`
    mv "$fname" "$n"
    let "numero += 1"
    fi
    done

    if [ "$numero" -eq "$SING" ]
    then
    echo "$numero arquivo renomeado."
    else
    echo "$numero arquivos renomeados."
    fi
    SING=1
    numero=0
    ENC=0

    for nome_arquivo in *
    do
    echo "$nome_arquivo" | grep -q "ú"
    if [ $? -eq $ENC ]
    then
    fname=$nome_arquivo
    n=`echo $fname | sed -e "s/ú/ú/g"`
    mv "$fname" "$n"
    let "numero += 1"
    fi
    done

    if [ "$numero" -eq "$SING" ]
    then
    echo "$numero arquivo renomeado."
    else
    echo "$numero arquivos renomeados."
    fi
    SING=1
    numero=0
    ENC=0

    for nome_arquivo in *
    do
    echo "$nome_arquivo" | grep -q "ô"
    if [ $? -eq $ENC ]
    then
    fname=$nome_arquivo
    n=`echo $fname | sed -e "s/ô/ô/g"`
    mv "$fname" "$n"
    let "numero += 1"
    fi
    done

    if [ "$numero" -eq "$SING" ]
    then
    echo "$numero arquivo renomeado."
    else
    echo "$numero arquivos renomeados."
    fi
    SING=1
    numero=0
    ENC=0

    for nome_arquivo in *
    do
    echo "$nome_arquivo" | grep -q "í"
    if [ $? -eq $ENC ]
    then
    fname=$nome_arquivo
    n=`echo $fname | sed -e "s/í/í/g"`
    mv "$fname" "$n"
    let "numero += 1"
    fi
    done

    if [ "$numero" -eq "$SING" ]
    then
    echo "$numero arquivo renomeado."
    else
    echo "$numero arquivos renomeados."
    fi

  4. #4
    Visitante

    Padrão ops...

    faltou o final, mas vcs sabem como terminar! Na verdade eh uma gambiarra violenta esse script, mas funciona, entao, dane-se a etica.

    Ass. O anti-etico