Encontre registros recentes que contenham a string ‘Exceção’, com contagem

Este simples bash one-liner encontrará logs recentes que contêm a string ‘Exception’ e imprimirá a contagem de correspondências:

find . -name '*.log' -mtime -2 -exec grep -Hc Exception {} ; | grep -v :0$

o find

  • -name '*.log' – combinar arquivos que terminam com .log
  • -mtime -2 – combinar arquivos modificados nos últimos 2 dias
  • -exec CMD ARGS ;– para cada arquivo encontrado, comando, onde executar {}na ARGSserá substituído com o caminho do arquivo

o grep

  • -c é imprimir a contagem das correspondências em vez das próprias correspondências
  • -Hé para imprimir o nome do arquivo, já que grepnormalmente não o imprimirá quando houver apenas um argumento de nome de arquivo
  • As linhas de saída estarão no formato path:count. Os arquivos que não corresponderem a “Exceção” ainda serão impressos, com 0 como contagem
  • O segundo grepfiltra a saída do primeiro, excluindo as linhas que terminam com :0(= os arquivos que não continham correspondências)

Dicas extras

  • Altere a “Exceção” para o indicador de falha relevante típico de seu aplicativo
  • Adicione -ipara greppara tornar a pesquisa insensível a maiúsculas e minúsculas
  • Para fazer a findcorrespondência estritamente apenas de arquivos, adicione-type f
  • Agende isso como um trabalho periódico e envie por e-mail a saída para você mesmo, canalizando para um remetente, por exemplo | mailx -s 'error counts' yourmail@example.com

Limitações

O -Hsinalizador de greppode não funcionar em sistemas operacionais mais antigos, por exemplo, Solaris mais antigos. Nesse caso, use ggrep(GNU grep), se existir.