Perso, j'avais traiter ce problème différement. Avec un
find . -type f > list_of_files.txt
dans le terminal système (fonctionne sous linux, mac, et windows 10. Pour les windows versions antérieures je ne sais pas). Avec ca je créé un fichier qui contient tous les noms des fichiers du dossier courants.
Puis après je fait une recherche de chaine de caractère dans ce fichier.
L'avantage déjà c'est que si j'ai plusieurs recherche à faire, l'opération de construction de ce fichier n'est à faire qu'une seule fois.
Je n'ai pas mesuré le temps d'éxécution de cette technique, mais je pense qu'une fois le fichier créé, c'est plus rapide. Car au lieu de demander au disque dur l'accès à plein de petit fichier, vous demander un seul et unique accès à un gros fichier, contenant la synthèse de toute l'info dont vous avez besoin.
Si on considère l'étape de construction du fichier via le terminal, elle reste aussi surement plus rapide qu'en python.
Autre point : Vous devriiez profiler votre code (avec cProfile par exemple) pour savoir où est ce que vous dépenser votre temps. Si ça se trouve vous faites des regex ultra couteuse, et c'est ca qui vous plombe et non pas le grand nombre de fichier à traiter !
Partager