Solução Naive
Assumirei que seus logs possuem nomes de arquivos que correspondem ao glob /xx/xx/logs/xx/*.log
e que você deseja enviar e-mails para [email protected]
newest=$(ls -rt /xx/xx/logs/xx/*.log | tail -n 1)
echo 'An error occured' | mutt [email protected] -s "Logs" -a "$newest"
Essa abordagem funciona se os arquivos tiverem nomes bem comportados. Em geral, porém, analisar a saída de ls
não é confiável.
Solução mais confiável
Isso evita usar ls
e será seguro para todos os nomes de arquivos:
inode=$(find /xx/xx/logs/xx/ -maxdepth 1 -type f -iname '*.log' -printf '%T@ %i\n' | sort -rn | awk '{print $2;exit;}')
newest=$(find /xx/xx/logs/xx/ -maxdepth 1 -inum "$inode")
echo 'An error occured' | mutt [email protected] -s "Logs" -a "$newest"
Testando para ver qual arquivo está selecionado
Para ver qual arquivo é o mais novo, sem enviá-lo por e-mail, execute:
inode=$(find /xx/xx/logs/xx/ -maxdepth 1 -type f -iname '*.log' -printf '%T@ %i\n' | sort -rn | awk '{print $2;exit;}')
newest=$(find /xx/xx/logs/xx/ -maxdepth 1 -inum "$inode")
echo "newest file is $newest"