Usando se e encontre juntos

0

Eu estou tentando escrever um script que echo "sucesso" se ele encontrar arquivos .trc com mais de 5 dias em um diretório. No entanto, estou recebendo um full_path_trace ': Nenhum arquivo ou erro de diretório, mesmo que o meu diretório exista. Eu não sei o que estou fazendo errado.

full_path_trace='/u01/app/oracle/myfolder/trace'
if [[ -n $(find "full_path_trace" -name "*.trc" -mtime +5) ]]
 then
   echo "success!"
else

  echo "fail"
fi
    
por ForeverAlone 02.02.2016 / 17:02

1 resposta

4

Você está perdendo a $ na frente da variável. Aqui eu faria:

if find "$full_path_trace" -name '*.trc' -mtime +5 -print -quit |
   grep -q '^'; then
  echo 'Success!'
else
  echo >&2 fail
fi

Elimine o -quit se o seu find não o suportar.

grep -q retorna verdadeiro assim que uma linha é encontrada na entrada.

-quit faria com que find saísse na primeira correspondência e parasse de procurar mais. Sem -quit , grep seria encerrado depois de ler a primeira linha e eventualmente faria com que find saísse mais cedo se houvesse muitos outros arquivos.

    
por 02.02.2016 / 17:10