My suggestion would be to use the selection tools to select the external part of the mesh, invert the selection and then delete the inside faces
You can either use the circle tool (C) to select the outside faces as if you were painting them or if you manage to get a loop around the holes you can then go to "Select">"Select Loops">"Select Loop Inner-Region". This will select either the inside or outside faces (I've never really been able to understand how Blender decides what is inside or outside the loop in some cases). If it selects the outside faces, you can invert the selection using (Ctrl+I). Then delete the faces by using (X) -> "Faces"
Once that's done, you can fill the holes using Grid fill (Ctrl+F -> "Grid Fill", only works if the loop has an even number of vertices) or using (F) otherwise. The second option will make a big and ugly polygon but you can fix this by going to the "Sculpting" workspace and remesh your whole mesh using the "Remesh" menu. Takes a bit of trial and error with the options but you should manage to get what you want
All those steps are destructive so I would advise you to make some copies of your mesh along the way so that you can easily come back to a previous step if you decide to do things differently
Ctrl
+I
andX
to delete. Or select the outer ones, hide them withH
, maybe select more and when all are hidden which you want to keep pressA
to select all and delete them. Then manually close the holes. $\endgroup$F
to fill them. This might be messy as well, eventually you can use a Remesh modifier but this will most likely end up with messy geometry too. But without seeing the mesh or checking the file itself it is hard to tell what works bet here. And I guess others might have different ideas too, so it all comes down to: how bad is the geometry, which method suits you best, how much effort do you want to put in this and what gives you the results that are most acceptable for you? $\endgroup$