Я предполагаю, что имена файлов в ваших журналах совпадают с глобусом /xx/xx/logs/xx/*.log
и что вы хотите отправить почту по адресу somebody@host.com
newest=$(ls -rt /xx/xx/logs/xx/*.log | tail -n 1)
echo 'An error occured' | mutt somebody@host.com -s "Logs" -a "$newest"
Этот подход работает, если файлы имеют хорошие имена. В общем, однако, анализ результатов работы ls
ненадежен.
Это позволяет избежать использования ls
и будет безопасно для любых и всех имён файлов:
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 somebody@host.com -s "Logs" -a "$newest"
Чтобы увидеть, какой файл самый новый, не отправляя его по электронной почте, запустите:
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"