Я использовал что-то подобное для go через все подкаталоги в каждом каталоге для .txt файлов:
.txt
for txt_file in pathlib.Path(path).glob('**\*.txt'): ...
Но я не уверен, как определить наихудшую временную сложность для него.