I was actually aware of this slowdown as well, although I haven't done anything about it yet... Unfortunately, regex matching does take time, so scanning dat several times is indeed likely to cause it to be pretty slow. The Delphi version (2.x) just uses normal filesystem glob matching, which is faster, but still doesn't really eliminate the problem... Actually, that's what I wanted to do for the Qt version too, but it wanted regex, so I used that for now >.>.
I like your idea, and perhaps I can take it to the next level; specifically, by scanning the entire game directory and filtering files into their respective directories as they're found, rather than only looking for files when we need them. That way, we're more likely to get all the files we want (this would eliminate the problem you had with duplicate log file entries entirely), and would inherantly speed up the scan process significantly. In short: great suggestion!