从 find 命令和邮件中仅获取文件名

从 find 命令和邮件中仅获取文件名

以下 find 命令将生成多个文件并发送所有这些文件

find /home/cde -ctime -1 -name "Sum*pdf*" -exec uuencode {} {} \; |mailx -s "subject" [email protected]

但我收到了诸如homecdeSum123.pdf和 之类的附件homecdeSum324.pdf。如何获取附件中的确切文件名。

答案1

如果我理解正确的话,您希望附件的文件名类似于Sum123.pdf而不是homecdeSum123.pdf.我假设后一个名称是由您的邮件程序生成的,该程序在保存时删除路径名中的斜杠。

我认为您应该使用不同的方式来调用uuencode,删除第二个参数上的路径名:

find /home/cde -ctime -1 -name "Sum*pdf*" | while read name; do uuencode "$name" "${name##*/}" | mailx -s "subject" [email protected]; done

这将为每个文件发送一封单独​​的邮件。该${name##*/}部分将采用变量$name,删除直到最后一个斜杠(包括最后一个斜杠)的所有内容并返回结果。

如果您想在一封邮件中发送所有文件,只需将mailx管道的一部分放在末尾即可:

find /home/cde -ctime -1 -name "Sum*pdf*" | while read name; do uuencode "$name" "${name##*/}"; done | mailx -s "subject" [email protected]

答案2

试试这个单线

find /home/cde -ctime -1 -name "Sum*pdf*"  | uuencode files.txt | mailx -s "subject" [email protected]

相关内容