Eu não sei como funcionou na linha de cmd como vc disse, pq a sintaxe estava errada, pois faltavam os apóstrofos e o nome do arquivo ou a cadeia. Vc tentou a sintaxe que propus? -- Abração, Julio *Cursos de Shell e Zenity nos finais de semana: - Em SP ligue (11) 2125-4747; - Em DF ligue (61) 3223-3000; - Turmas fechadas em outras cidades ligue (21) 8112-9988 *
2009/1/8 Marcelo Vilela de Morais <[email protected]> > Valeu pela ajuda Julio. > O que eu preciso fazer é listar os arquivos dentro do > diretório /var/james-2.3.0rc5/apps/james/var/mail/trash/ e o resultado > estou > jogando para um arquivo. > E com o sed eu estou adicionando na frente de cada linha o comando "rm -f" > mais o path da variável. > > Não conheço o sed e essa é minha primeira tentativa. > > O problema na verdade é que ele funciona bem quando eu executo o script > direto ou o comando na mão, mas quando executo com o nohup e & ele me manda > a mensagem de garbled. > > 2009/1/8 Julio C. Neves <[email protected] <julio.neves%40gmail.com>> > > > > Fala Marcelo, > > > > O cmd sed s/^/"rm -f /var/james-2.3.0rc5/apps/james/var/mail/trash/"/ > > > > está totalmente errado. Está tão erado que não entendi o que vc queria, > mas > > assim mesmo vou dar um pitaco: > > > > sed 's#^#rm -f /var/james-2.3.0rc5/apps/james/var/mail/trash/#' arquivo > > > > ou: > > > > sed 's#^#rm -f /var/james-2.3.0rc5/apps/james/var/mail/trash/#' <<< > > $variavel > > > > Botei apóstrofos (obrigatórios) delimitando o escopo do sed e troquei as > > barras separadoras por #, já que o sed define como separador o primeiro > > caracter após o s. Faltou tb dizer o que vc estava "sedando". Um arquivo, > > uma cadeia ou uma variável. > > > > OBS: Só agora me toquei que o ksh do sun pode não conhecer here strings > > (<<<) se for este o caso, troque-a por um echo ... | sed ... > > -- > > Abração, > > Julio > > *Cursos de Shell e Zenity nos finais de semana: > > - Em SP ligue (11) 2125-4747; > > - Em DF ligue (61) 3223-3000; > > - Turmas fechadas em outras cidades ligue (21) 8112-9988 > > * > > > > 2009/1/8 Marcelo Vilela de Morais > > <[email protected]<vilelamorais%40gmail.com> > <vilelamorais%40gmail.com> > > > > > > > > > > > Bom dia galera. > > > > > > Estou tentando fazer a contagem de arquivos em um diretório e depois > > apago > > > os que já foram contados. Estou fazendo isso no Solaris 5.9 com o bash > > > mesmo. > > > Pra isso estou utilizando o seguinte script. > > > > > > #! /bin/bash > > > > > > hoje=`date +%Y%m%d` > > > i=0 > > > > > > while true > > > do > > > # variaveis utilizadas > > > m_path='/var/james-2.3.0rc5/apps/james/var/mail' > > > l_path='/var/james-2.3.0rc5/apps/james/var/mail/result_lista' > > > c_path='/var/james-2.3.0rc5/apps/james/var/mail/result_lista/conta' > > > r_path='/var/james-2.3.0rc5/apps/james/var/mail/result_lista/remove' > > > t_path='/var/james-2.3.0rc5/apps/james/var/mail/trash' > > > s_path='/var/james-2.3.0rc5/apps/james/var/mail/trash/' > > > contagem=0 # utilizada para registar o numero de mensagens por arquivo > > > date_a=`date +%Y%m%d%H%M%S` #hora da coleta para a contagem > > > i=`expr $i + 1` > > > > > > # lista total de arquivos e coloca em um arquivo para contagem total > > > date_c=`date +%H%M%S%d%m%Y` # a variavel e usada para dar nome ao > > > arquivo e para apagar tb > > > ls $t_path/ >> $c_path/conta_nome_arq_$date_c.txt > > > chmod 666 $c_path/conta_nome_arq_$date_c.txt > > > > > > # conta os arquivos > > > contagem=`cat $c_path/conta_nome_arq_$date_c.txt | wc -l` > > > if [ -n "$contagem" ] && [ $contagem -ne 0 ] ; then > > > echo $date_a" Total: "$contagem >> $l_path/Lista_contagem_$hoje.txt > > > chmod 666 $l_path/Lista_contagem_$hoje.txt > > > fi > > > > > > # cria shell_script para remover os ja contados > > > date_r=`date +%H%M%S%d%m%Y` # a variavel e usada para dar nome ao > > > arquivo e para apagar tb > > > sed s/^/"rm -f /var/james-2.3.0rc5/apps/james/var/mail/trash/"/ > > > $c_path/conta_nome_arq_$date_c.txt > > > $r_path/remove_arq_contado_$date_r.sh > > > chmod 666 $r_path/remove_arq_contado_$date_r.sh > > > > > > # prepara o script > > > chmod ugo+x $r_path/remove_arq_contado_$date_r.sh > > > > > > # remove os ja contados > > > nohup $r_path/remove_arq_contado_$date_r.sh & > > > > > > # apaga script > > > #rm -f $r_path/remove_arq_contado_$date_r.sh > > > #rm -f $c_path/conta_nome_arq_$date_c.txt > > > > > > # troca de dia > > > hoje=`date +%Y%m%d` > > > done > > > > > > # EOF > > > > > > Eu o executo assim "nohup count_file_88_prod.sh &" e no nohup.out eu > > tenho > > > a > > > seguinte resposta: > > > sed: command garbled: s/ > > > /var/james-2.3.0rc5/apps/james/var/mail/count_file_88_prod.sh: /rm -f > > > /var/james-2.3.0rc5/apps/james/var/mail/trash//: not found > > > > > > Quando executo o script com "./count_file_88_prod.sh" ele executa > > > normalmente. > > > > > > Alguem conhece essa diferença de execução ou alguma alternativa? > > > > > > Obrigado > > > > > > -- > > > Marcelo Vilela > > > > > > [As partes desta mensagem que não continham texto foram removidas] > > > > > > > > > > > > > [As partes desta mensagem que não continham texto foram removidas] > > > > > > > > -- > Marcelo Vilela > > [As partes desta mensagem que não continham texto foram removidas] > > > [As partes desta mensagem que não continham texto foram removidas]
