Página 2 de 2 PrimeiroPrimeiro 12
+ Responder ao Tópico



  1. #21

    Padrão

    Citação Postado originalmente por lucianogf Ver Post
    cara..
    experimenta usar o script abaixo, altere de acordo com o caminho dos arquivos:

    Código :
    #!/bin/bash
    cd /caminho/dos/arquivos
    a="dbf DBF fpt FPT idx IDX prn PRN"
    for i in $a; do
       rm -rf *.$i;
    done


    CUIDADO ao alterar este script, pois se houver um espaço entre o "*" e o "." será apagado tudo no diretório corrente..

    scripts que envolvem o comando 'rm' são perigosos...

    para testar, você pode substituir o comando "rm" pelo "ls", quando executar o script deverá mostrar todos os arquivos com as extensões contidas na variável $a

    poste a linha do cron que executa seu script
    Beleza!!!

    Vou testar isso daí o quanto antes, e assim que possível darei retorno.

    Muito obrigado pela sua atenção e até mais.

  2. #22

    Padrão

    Citação Postado originalmente por aprendiz_ce Ver Post
    Beleza!!!

    Vou testar isso daí o quanto antes, e assim que possível darei retorno.

    Muito obrigado pela sua atenção e até mais.
    Olá,

    Fiz o teste recomentado por você e ficou na mesma. Fiz o seguinte: Criei um script semelhante ao seu exemplo, só que no lugar do "rm -rf" coloquei o "ls -lia" confirme você menciona. A única diferença é que agora o referido script aponta o seguinte erro "./testescript.sh: line 6: /bin/ls: Lista de argumentos muito longa. E agora? Continuo sem endender nada!

    Grato e fico no aguardo de um comentário seu.

  3. #23

    Padrão

    uhmm...

    "lista de argumentos muito longa" isso já é alguma coisa, existe uma limitação no linux com relação a trabalhar com muitos arquivos ao mesmo tempo, não lembro qual variável no /proc precisa ser alterada pra poder trabalhar com arquivos acima do normal. Mas podemos resolver este problema alterando o script.


    Código :
    #!/bin/bash
    cd /caminho/dos/arquivos
    a="dbf fpt idx prn"
    for i in $a; do
       for u in `find . -type f -iname "*.$i" -print 0`; do
           echo $u
       done
    done
    O script acima deverá listar todos os arquivos do diretório que está no começo dele..

    Se funcionar é só substituir o "echo" por "rm -f"
    Última edição por lucianogf; 11-03-2008 às 15:16.

  4. #24

    Padrão

    O script acima irá tratar arquivo por arquivo, e não arquivos em massa...

  5. #25

    Padrão

    cara...

    fiz um teste aqui e o script que passei por ultimo não funciona...

    os arquivos que você vai trabalhar possuem espaço no nome?

  6. #26

    Padrão

    Citação Postado originalmente por lucianogf Ver Post
    cara...

    fiz um teste aqui e o script que passei por ultimo não funciona...

    os arquivos que você vai trabalhar possuem espaço no nome?
    Olá lucianogf,

    Os arquivos em questão não teram espaços em branco no seu nome. OK?
    O que me dei mais ENCUCADO quanto a essa problema é que as máquinas são semelhantes, os serviços e os pacotes instalados. Em uma funciona e na outra não.

    Grato pela atenção.

  7. #27

    Padrão

    cara..

    fiz um teste nesse script aqui e ele funciona perfeitamente com arquivos que não tem espaço no nome

    Código :
    #!/bin/bash -v
    DIR=/home/luciano/mp3
    cd $DIR
    a="mp3"
    for i in $a; do
       find . -type f -iname "*.$i" -print0 | xargs -0 -i% echo % >> $i.txt
    done
     
    for b in $a; do
       for c in `cat $DIR/$b.txt`; do
          echo $c
       done
    done
    você só precisa substituir o caminho e a variável $a, se aparecer os nomes normalmente é só trocar o "echo " por "rm -f"

    valeu