我有一个Kerio Connect邮件服务器,它将所有电子邮件以相对标准的邮件假脱机文件夹结构保存为原始的.eml文件。 我的任务是对关键字和电子邮件地址的某些用户邮箱执行关键字search。 然后我需要将find的文件复制到另一个文件夹。
文件夹结构将如下所示:
mail example.com user1 INBOX Sent Items etc user2 INBOX etc
困难在于,作为.eml文件的电子邮件在每个文件夹中都用一个序列号命名 – 所以如果在user1的收件箱里find一个名为00000123.eml的电子邮件,并且在他们的已发送邮件中有同名的电子邮件,其中的关键字,我不希望一个复制在另一个的顶部。
我还需要执行一些不区分大小写的关键字search,以便search“关键字”并将其与关键字和关键字以及KEYWORD进行匹配。
我认为下面的命令会做我想做的事情,但是我不是100%确定的,而且我正在运行这个大约100 GB的eml文件,所以我想确保它在运行之前都是正确的。
grep -i -r -l -e "[email protected]|[email protected]|keyword1|anotherkeyword|evenmore" /usr/local/kerio/mailserver/store/mail/example.com/user1/ | xargs -I{} rsync -Rv {} /Volumes/Data/Email\ Discovery/201706/user1/
根据我的统计,这将做一个不区分大小写的search(-i)recursion(-r)打印文件名(-l)并使用正则expression式(-e),然后将结果传递给rsync,它将recursion地复制到目标文件夹和(希望)保持相同的文件夹结构。
有没有更有效的方法来做到这一点?