我想在日志文件中查找 ora- 错误。
grep -L ora- *.log
假设它返回 abc.log 和 xyz.log
然后,我想捕捉每个文件的内容并动态地邮寄它
(如cat abc.log|mail -s abc.log myemail@email.com
)
对于上面的示例,我期待两封包含 abc.log 和 xyz.log 内容的电子邮件
我尝试过做
grep -i -L ora- *.log|xargs cat| mail myemail@email.com
但它只发送 1 封电子邮件。
谢谢
最佳答案
如果您希望每个文件一封邮件,则需要将 mail
作为 xargs
的子级循环或运行:
grep -L ora- *.log | xargs -i mailx -s "{}" -a "{}" myemail@email.com
如果您想将所有文件附加到一封邮件中,那么您必须构建一个命令:
cmd="mailx -s logs "
for f in $(grep -L ora- *.log) ; do
cmd="$cmd -a '$f'"
done
eval $cmd myemail@email.com
请注意,当文件名包含单个刻度时,这很脆弱并且会中断。
关于Linux : mail multiple files returned from grep,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24289650/