Extrae el nombre del file del command find

Estoy tratando de extraer el nombre del file y adjuntarlo al correo. Pero cuando envío un correo, el file adjunto incluye el nombre de la ruta y el nombre del file.

Ej: dir=/home/as123/bill y filename=abc.pdf.Z y estoy recibiendo files adjuntos como

 homeas123billabc.pdf.Z find $dir -ctime -1 -type f -name "abc*pdf*" -exec basename {} \; -exec uuencode {} {} \; | mailx -s "north" abc@gmail.com 

printf no está instalado en mi máquina, sin eso ¿cómo escribir mi script para get solo el nombre del file como file adjunto?

Sospecho que quieres decir que quieres que el nombre de file esté incluido en la salida de uuencode :

 begin 644 path/to/the/file.pdf.Z %=&5S=`H` ` end 

no include el path/to/the .

Para eso, quiere que el segundo argumento pasado a uuencode sea ​​el nombre base. Para eso tendrías que hacerlo como:

 find "$dir" -ctime -1 -type f -name "abc*pdf*" -exec sh -c ' for file do uuencode "$file" "$(basename "$file")" done' sh {} + 

O si su find admite -execdir :

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

Si su find compatible con -printf , podría haberlo hecho con:

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