找到标题为管道的输出

时间:2013-09-24 10:50:03

标签: bash shell pipe

我尝试从具有mod时间的目录中获取列表,并将每个管道发送到mail命令

所以我把这个结构弄乱了:

find /etc/myfolder -type f -exec sh -c 'printf "%-40s %s\n" $(echo {}|sed "s:/etc/myfolder::g") "$(stat -c %y {})" ' \; | mail -a "FROM: Server <root@server.com>" -a "Content-type: text/plain; charset=UTF-8" -s "test" my@domain.com

现在我希望我有一个标题行 - 但不知道如何。

printf "%-40s %s\n" File Mod | find ....

这无法工作,因为find不会将它转发到下一个管道。

任何想法怎么做?我知道我有可能首先将内容写入文件并将此文件内容管道传输到邮件,但这不是我想要做的。

我更喜欢oneliner:)

好的,现在这是我在crontab中使用的工作示例:

(printf "\%-40s \%s\n" File Mod; find /etc/folder -type f -exec sh -c 'printf "\%-40s \%s\n" $(echo {}|sed "s:/etc/folder/::g") "$(stat -c \%y {})" ' \; ) | mail -a "FROM: Server <root@server.com>" -a "Content-type: text/plain; charset=UTF-8" -s "Test" my@domain.com

1 个答案:

答案 0 :(得分:1)

在将输出汇总到mail之前

Group commands

说:

{ echo "My title"; find ... \; ; } | mail ...

(注意上面命令中的\;表示提供给-exec的命令终止。另一个分号是终止列表所必需的。)