Linux中的电子邮件目录列表

时间:2014-04-16 19:14:35

标签: linux bash shell email

我在Linux OS 2.1上。未在这些服务器上配置mailx或uuencode等选项。我的目标是通过电子邮件发送一个目录中的文件列表(包含日期和时间),这些目录在一天内更新。我已经设法创建了一个让我这样做的脚本,但是当我收到电子邮件时,所有行都显示为一个连续输出。输出没有中断。 Outlook忽略换行符。现在这个列表必须转到一些大用户,我不能要求他们修改outlook中的设置以忽略换行符。这可以通过我正在使用的脚本实现吗

这是我正在使用的脚本。

!/bin/bash
dir=/path-to-dir
cd $dir
find . -maxdepth 1 -type f -mtime -1 -exec ls -lrth {} \;> /tmp/filelist
cat /tmp/filelist | awk -F/ '{print $1,$2}' |awk '{print $6,$7,$8,$10}' | mail -s "Today's Directory List" email@address.com

我每天发送一次这个目录列表,因此会设置一个cronjob任务来执行脚本。 我甚至尝试将文件作为附件发送,但uuencode没有在服务器上进行配置。 因此,我正在寻求帮助。

由于

3 个答案:

答案 0 :(得分:0)

您的问题可能是unix和windows之间的行尾字符差异。 尝试更改:

awk '{print $6,$7,$8,$10}'

要:

awk '{print $6,$7,$8,$10,"\r"}'

看看是否有帮助。

答案 1 :(得分:0)

Add 2 extra spaces at the beginning of each line to trick Outlook into not removing line-breaks。您可以在管道的最后awk轻松完成此操作。

它可能值得包括"\r",在另一个答案中提出,以及它具有 Outlook 可能期望的CR-LF行终止符。

答案 2 :(得分:0)

所以这是最终的脚本,对我来说很好。感谢Emmet建议在前面使用额外的空间来哄骗前景。

!/ bin / bash
dir = / path-to-dir
cd $ dir
找 。 -maxdepth 1-type f -mtime -1 -exec ls -lrth {} \; | awk -F /' {print $ 1,$ 2}' | awk' {打印$ 6,$ 7,$ 8,$ 10," \ r" }'> / tmp / filelist
awk' $ 0 =" " $ 0#39; / tmp / filelist> /tmp/list.txt
mail -s"今天的目录列表" email@address.com

再次感谢大家。