Extraia o nome do arquivo do comando find

Extraia o nome do arquivo do comando find

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/bille filename=abc.pdf.Ze 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]

printfnã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 uuencodesaí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 uuencodeseja 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ê findapoiar -execdir:

find "$dir" -ctime -1 -type f -name "abc*pdf*" -execdir uuencode {} {} \;

Se você tivesse findapoiado -printf, você poderia ter feito isso com:

find "$dir" -ctime -1 -type f -name "abc*pdf*" -printf '%p\0%f\0' |
  xargs -r0n2 uuencode

informação relacionada