Я думал, что обход структуры был дорогостоящим, и хотел выполнить работу для каждого файла, как он был найден при обходе, вместо того, чтобы сначала собирать список.Но эксперименты показывают, что это не так, обход на самом деле очень дешевый по сравнению с открытием файла, не говоря уже о разборе содержимого.Поэтому я воспользуюсь предложением @Joseph и просто воспользуюсь одной из перечисленных опций и вызову функцию для каждого файла.
Я сделаю это постепенно, асинхронно и обновлю пользовательский интерфейс.
Спасибо, что выправил мои мысли.