There may be a way via one of the selection items in the UI, however will propose a script solution
Run over all faces in the edit mesh, and if all face edges, or all but one face edge are boundary select the face.
from bpy import context
ob = context.edit_object
me = ob.data
bm = bmesh.from_edit_mesh(me)
You do have bad geometry. To find and fix it it, I did the following in edit mode:
Go to face select mode and select most of the faces.
Then type h to hide those faces
This isn't strictly necessary but it makes it easier to follow the next bit.
Next I went into vertex select mode, and selected every vertex
and I typed m to bring up the merge menu
and I ...
To elaborate on Zak’s answer a little, the issue stems from these four edges at the corners of the mesh:
When you use the Bevel modifier with the Angle limit method, only sharp edges will be beveled. These four edges are certainly not sharp—the faces they’re connected to are completely flat—so they don’t get beveled at all. This produces corner geometry ...
Well, I'd bet there was an easier way, but here's how I ended up solving this. I created a new object from the vertices on the inside edge of the tube. Then used that with a Boolean operation to cut a hole in the walls of the frame (though I had to move the frame away from the tube to make this work, then moved it back into place after the cut).
This seems to be due to the subdivision modifier you're using. Subdiv modifiers don't handle complex corner geometries too well, such as this one.
If you can manage to distribute this more evenly, with fewer edges connected that one vertex it should work.
On top of this, you might want to think of remodelling the topology across that front area to some ...
The shrink/fatten tool is exactly what you need! Select the middle loop of each of the barrel's sides (the one you want to make slightly smaller) and press Alt S. This will shrink the edge loop equally in all directions, giving you the shape you're after.