Effectuer une opération récursivement sur tous les fichiers d’un répertoire et de ses sous-répertoires

Problème

Vous souhaitez effectuer une opération sur tous les fichiers d’un répertoire ainsi que ses sous-répertoires.

Solution

Il n’y a pas de solution toute faite, vous devez programmer un algorithme de parcours des répertoires de manière récursive.

Discussion

Il existe plusieurs manières de parcourir les répertoires. La méthode la plus simple consiste à tester chaque fichier pour savoir si c’est un répertoire, et le cas échéant, appliquer l’algorithme à ce répertoire, de manière récursive. Cette méthode a l’avantage d’être simple mais pose un problème d’ordre de parcours. En effet, souhaitez-vous parcourir tous les fichiers et répertoires d’un même niveau ou pouvez-vous vous contenter de traiter les sous-répertoires d’un niveau au moment où ils se présentent, et ne continuer le niveau en cours que plus tard ?

Le programme suivant montre une méthode proche de celle de la commande find sur GNU/Linux, à base de récursivité et en utilisant chdir() qui nous place en permanence dans le répertoire en cours de traitement. Cette méthode utilise une liste chaînée pour obtenir la liste des fichiers d’un répertoire. Cela permet de faire un classement optionnel...

Pour consulter la suite, découvrez le livre suivant :
couv_EI3CACT.png
60-signet.svg
En version papier
20-ecran_lettre.svg
En version numérique
41-logo_abonnement.svg
En illimité avec l'abonnement ENI
130-boutique.svg
Sur la boutique officielle ENI
Précédent
Connaître le contenu d'un répertoire
Suivant
Effacer un répertoire et tout son contenu