I had that happen where it looked for a shx file and the file was in the folder it opened up when it couldn't find it. No clue why. I finally found an instance of the shx in a linetype definition (in the template) that once I deleted the message went away. I know you can check the box to Do This Every Time, but that doesn't solve the problem, just hides it.
you might try this lsp routine. I found it when researching the issue - I think it might even be from Autodesk. but it didn't really do much for me. DELSHAPE is the file and command to run :
;;;-------------------- START OF FILE ------------------------
;;;--------------------------------------------------------------------------;
;;; DESCRIPTION
;;; This routine deletes all shapes in the drawing
;;; that do not have a file definition.
;;;
;;; RUN
;;; -load this file and run the new command DELSHAPE
;;;--------------------------------------------------------------------------;
(defun c:delshape ()
(setvar "CMDECHO" 0)
(setq n 0
nshapes 0
delete 0
)
(setq shapes (ssget "X" '((0 . "SHAPE")))) ;shapes
(setq shapes_name (ssget "X" (list (cons 0 "SHAPE") (cons 2 "*"))))
(if (/= shapes nil)
(setq nshapes (sslength shapes))
) ; n. total de shapes
(if (and (= shapes_name nil) (/= shapes nil))
(progn
(while (< n nshapes)
(setq entity (ssname shapes n))
(entdel entity)
(setq delete (+ 1 delete))
(setq n (+ 1 n))
)
)
)
(while (and (< n nshapes) (/= shapes nil) (/= shapes_name nil))
(setq entity (ssname shapes n))
(if (or (= (ssmemb entity shapes_name) nil))
(progn
(entdel entity)
(setq delete (+ 1 delete))
)
)
(setq n (+ 1 n)) )
(prin1 delete)
(princ " shape(s) deleted\n")
(command "_purge" "_sh" "" "_n")
) ;;---------------- END OF FILE --------------