
Estou tentando extrair o nome do arquivo e anexá-lo ao email. Mas quando envio um e-mail, o anexo vem com o nome do caminho e o nome do arquivo.
Ex: dir=/home/as123/bill
e filename=abc.pdf.Z
e estou recebendo apego como
homeas123billabc.pdf.Z
find $dir -ctime -1 -type f -name "abc*pdf*" -exec basename {} \; -exec uuencode {} {} \; | mailx -s "north" [email protected]
printf
não instalado na minha máquina, sem isso como escrever meu script para obter apenas o nome do arquivo como anexo?
Responder1
Eu suspeito que você quer dizer que deseja que o nome do arquivo seja incluído na uuencode
saída:
begin 644 path/to/the/file.pdf.Z
%=&5S=`H`
`
end
para não incluir o path/to/the
.
Para isso, você deseja que o segundo argumento passado uuencode
seja o nome base. Para isso você precisaria fazer assim:
find "$dir" -ctime -1 -type f -name "abc*pdf*" -exec sh -c '
for file do
uuencode "$file" "$(basename "$file")"
done' sh {} +
Ou se você find
apoiar -execdir
:
find "$dir" -ctime -1 -type f -name "abc*pdf*" -execdir uuencode {} {} \;
Se você tivesse find
apoiado -printf
, você poderia ter feito isso com:
find "$dir" -ctime -1 -type f -name "abc*pdf*" -printf '%p\0%f\0' |
xargs -r0n2 uuencode