我在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没有在服务器上进行配置。 因此,我正在寻求帮助。
由于
答案 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
再次感谢大家。