Sergio, todas os argumentos que vc passa para um programa, comando ou função no bash , incluindo o -exec do find, são lidos do começo para o fim da linha de instrução. Alguns caracteres especiais podem terminar essa leitura, como o caso de um comentario :
echo ola # isso nao sera impresso o '\n' nova-linha e o ';' são sinais que a linha de instrução terminou ls ; echo 'fim' isso vale para os pipes, quando vc coloca um | grep ... apos o seu find, a sua linha de instrução termina ali, e logo começa uma outra. Vc teria q substituir então a opção -exec por alguma instrução que fizesse algo semenhante. Vc pode continuar a lógica usando um terceiro pipe para um xargs, de uma olhada http://pastebin.com/876672 (tomei a liberdade para simplificar o script ao meu bel prazer, numa atividade nerd relaxante ao som de pink floyd) Deve funcionar agora, dê uma olhada. Abraço. On 2/6/07, Sergio Maia Rabelo <[EMAIL PROTECTED]> wrote: > > > > > > > Olá pessoal, olhando alguns scripts aqui na lista de remoção de arquivos no > servidor, resolvi mesclar dois deles mas está acontecendo um erro no comando > exec. > Vejam o erro e abaixo segue o script. > > extensao: line 12: -exec: command not found > > #!/bin/bash > echo -n "Digite o diretorio de partida: " > read DIR > echo -n "Existe algum diretorio de excecao: " > read RESP > if [ $RESP = "S" ] > then > echo -n "Digite o diretorio de excecao: " > read DIR1 > echo -n "Digite entao a extensao: " > read EXT > find $DIR -iname "*.$EXT"|grep -vE $DIR1|-exec rm {} \; > echo "Arquivos apagados! Aguarde..." > sleep 3 > exit > elif [ $RESP = "N" ] > then > echo -n "Digite a extensao:" > read EXT1 > find $DIR -iname "*.$EXT1" -exec rm {} \; > echo "Arquivos apagados! Aguarde..." > sleep 3 > fi > exit > > Valeu pessoal! > Sérgio Maia > > [As partes desta mensagem que não continham texto foram removidas] > > -- Tiago B Peczenyj Linux User #405772 # cd /pub # more beer
