+ Responder ao Tópico



  1. #1
    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. 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
    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
    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






Tópicos Similares

  1. Dúvida ! IMPORTANDO ARQUIVO EM SHELL SCRIPT
    Por milucy95 no fórum Linguagens de Programação
    Respostas: 0
    Último Post: 14-01-2016, 09:11
  2. Dúvida sobre passagem de parâmetros em Shell.
    Por Bit no fórum Servidores de Rede
    Respostas: 2
    Último Post: 06-08-2011, 05:48
  3. Somar em shell script
    Por ricardorocha no fórum Linguagens de Programação
    Respostas: 3
    Último Post: 17-03-2003, 16:49
  4. dúvida em x no notebook
    Por mondragon no fórum Servidores de Rede
    Respostas: 1
    Último Post: 10-02-2003, 23:40
  5. Dúvida em IPTABLES...
    Por soyeu no fórum Servidores de Rede
    Respostas: 2
    Último Post: 28-11-2002, 14:41

Visite: BR-Linux ·  VivaOLinux ·  Dicas-L