我正在尝试提取文件名并附加到邮件。但是当我发送邮件时,附件带有路径名和文件名。
dir=/home/as123/bill
例如:filename=abc.pdf.Z
我越来越依恋
homeas123billabc.pdf.Z
find $dir -ctime -1 -type f -name "abc*pdf*" -exec basename {} \; -exec uuencode {} {} \; | mailx -s "north" [email protected]
printf
没有安装在我的机器上,如果没有,如何编写我的脚本以仅获取文件名作为附件?
答案1
我怀疑您的意思是您希望文件名包含在uuencode
输出中:
begin 644 path/to/the/file.pdf.Z
%=&5S=`H`
`
end
不包括path/to/the
.
为此,您希望传递的第二个参数uuencode
是基本名称。为此,您需要这样做:
find "$dir" -ctime -1 -type f -name "abc*pdf*" -exec sh -c '
for file do
uuencode "$file" "$(basename "$file")"
done' sh {} +
或者如果您find
支持-execdir
:
find "$dir" -ctime -1 -type f -name "abc*pdf*" -execdir uuencode {} {} \;
如果你find
支持的话-printf
,你可以这样做:
find "$dir" -ctime -1 -type f -name "abc*pdf*" -printf '%p\0%f\0' |
xargs -r0n2 uuencode