Linux : mail multiple files returned from grep

标签 linux file email grep

我想在日志文件中查找 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/

相关文章:

python - Python 中的虚拟括号

python - 标准 midi 文件使用哪种编码?

java - 在任何计算机上创建或读取文件

iphone - 在 iPhone SDK 中通过短信和电子邮件发送 ASCII Art 时对齐不正确

linux - KeeWeb 桌面安装错误

linux - 执行 ls -l |grep D | 时出现错误grep 德

java - 使用Java群发多封邮件

Django - Allauth 默认电子邮件地址错误

linux - 验证初始拥塞窗口中的变化

python - 仅当第一个内容写入文件时才将文件写入磁盘