StringMatchQ threads its first arguments. Good use of this makes for way faster alternatives to the ones suggested
dic = DictionaryLookup[Repeated[_, 5]]; spatt = "a" ~~ _ ~~ "o" ~~ _ ~~ "t"; Pick[dic, StringMatchQ[dic, spatt]] // AbsoluteTiming Cases[dic, s_ /; StringMatchQ[s, spatt]] // AbsoluteTiming Select[dic, StringMatchQ[#, spatt] &] // AbsoluteTiming {0.0050002, {"abort", "about", "adopt", "afoot", "aloft"}}
{0.0480028, {"abort", "about", "adopt", "afoot", "aloft"}}
{0.0500028, {"abort", "about", "adopt", "afoot", "aloft"}}