Have you tried to locate the items by zooming to them? It's possible a caravan member got spooked on the way out and dropped the items carried (thus not the complete caravan), in which case the items would be in a pile where the merchant got spooked.
It's possible zooming will get you to a location near the map edge with no items in sight, in which case you may be subject to a bug (there are quite a few of them involving merchants). If you zoom to an empty location, you might want to try to back up your save and run the following script DFHack script (saved to <DF>\hack\scripts\claimmerchantstuff.lua):
function claimmerchantstuff ()
-- pos = {x=df.global.cursor.x,y=df.global.cursor.y,z=df.global.cursor.z}
printall (df.global.cursor)
-- for i, v in pairs (df.global.world.items.other) do
--printall (v)
-- for k = 0, #v - 1 do
-- if v [k].id == 36913 then
-- dfhack.println ("index: " .. tostring (k))
-- end
-- end
-- end
for i = 0, #df.global.world.units.all - 1 do
if df.global.world.units.all .flags1.merchant and
df.global.world.units.all .flags1.dead and
df.global.world.units.all .flags3.scuttle then
dfhack.println ("Scuttling merchant: " .. tostring (i))
for _, v in ipairs (df.global.world.units.all .inventory) do
if v.mode == 0 then -- hauled
-- v.item.pos.x = df.global.world.units.all .pos.x
-- v.item.pos.y = df.global.world.units.all .pos.y
-- v.item.pos.z = df.global.world.units.all .pos.z
-- v.item.flags.on_ground = true
-- v.item.flags.in_inventory = false
-- v.item.flags.removed = false
v.item.flags.dump = true
-- v.item.flags.trader = false
end
end
end
end
end
claimmerchantstuff()
If the script doesn't generate a pile of items where the zooming took you, I'd revert to the backup (the script most likely did nothing, but if it didn't help you shouldn't take the risk).
The script looks for dead merchants who have scuttled stuff and cause their items to be dropped on the ground rather than being carried on their invisible bodies, and has worked successfully once.
Note that the items will still remain forbidden, so you still have to unforbid them manually.