Recherche de site Web

Utiliser les options maxdepth et mindepth avec la commande find de Linux


Dans ce tutoriel, apprenons comment utiliser les options maxdepth et mindepth avec la commande find pour rechercher des fichiers et des répertoires dans une plage spécifiée, c'est-à-dire des niveaux de profondeur sous Linux avec des exemples.

À la fin, nous fournissons également une analogie simple pour aider les débutants à comprendre facilement les options mindepth et maxdepth de la commande find de Linux.

Quelles sont les options maxdepth et mindepth dans la commande find ?

Pour ceux qui ne le savent pas encore, l'option maxdepth dans la commande find spécifie la profondeur maximale (nombre de niveaux) pour descendre dans la hiérarchie des répertoires. Elle limite la recherche à un niveau de profondeur spécifique ou moins.

L'option mindepth spécifie la profondeur minimale (nombre de niveaux) à partir de laquelle la recherche doit commencer à appliquer des tests ou des actions. Elle garantit que la recherche n'inclut pas les fichiers ou répertoires des niveaux moins profonds.

Les options maxdepth et mindepth vous permettent de limiter la profondeur de parcours des répertoires, ce qui peut être utile lorsque vous voulez vous concentrer sur des niveaux spécifiques de l'arborescence des répertoires.

Voyons quelques exemples sur la façon d'utiliser ces deux options pour rechercher efficacement des fichiers et des répertoires depuis la ligne de commande dans un système Linux.

Rechercher des fichiers et des répertoires dans une plage spécifiée en utilisant les options maxdepth et mindepth de la commande find

À des fins de démonstration, nous utiliserons le répertoire suivant.

$ tree MyFiles/
MyFiles/
├── Dir1
│   ├── Dir2
│   │   ├── Dir3
│   │   │   └── file3
│   │   └── file2
│   ├── file1
│   └── file1.1
├── myfile1
├── myfile2
└── myfile3

3 directories, 7 files

Comme vous pouvez le voir, il y a 3 sous-répertoires à savoir dir1, dir2 et dir3 et il y a 7 fichiers à savoir myfile1, myfile2, myfile3, file1, file1.1, file2 et file3 sous un répertoire racine appelé MyFiles.

Étant donné la structure de répertoires fournie sous MyFiles/, explorons comment les options maxdepth et mindepth de la commande find peuvent être utilisées pour cibler notre recherche de fichiers ou de répertoires à des profondeurs spécifiques.

Utilisation de maxdepth

L'option maxdepth limite la recherche à un nombre spécifié de niveaux en dessous du point de départ de la commande.

Exemple 1:

Listez tout ce qui se trouve dans MyFiles/ jusqu'à 1 niveau de profondeur (y compris les fichiers et répertoires directement sous MyFiles/, mais pas plus bas).

$ find MyFiles/ -maxdepth 1

Cela listerait Dir1, myfile1, myfile2 et myfile3, mais cela ne listerait pas Dir2, file1, file1.1, ni rien en dessous de Dir2.

Exemple 2:

Listez tout jusqu'à 2 niveaux de profondeur.

$ find MyFiles/ -maxdepth 2

Cela inclurait Dir1, myfile1, myfile2, myfile3, et aussi Dir2, file1, et file1.1, mais pas Dir3 ni file2 et file3.

Utilisation de mindepth

L'option mindepth spécifie la profondeur minimale avant que find commence à renvoyer des résultats.

Exemple 3:

Listez tout dans MyFiles/ à partir de 2 niveaux de profondeur.

$ find MyFiles/ -mindepth 2

Cette commande ignore les enfants directs de MyFiles/ (comme Dir1, myfile1, myfile2, myfile3) et liste tout depuis Dir2, file1, file1.1, et au-dessous.

Exemple 4:

Trouvez des fichiers à partir de 3 niveaux de profondeur.

$ find MyFiles/ -mindepth 3 -type f

Cela listerait file2 et file3, en sautant les fichiers et répertoires qui ont moins de 3 niveaux de profondeur.

Combiner maxdepth et mindepth

Vous pouvez combiner ces options pour affiner la profondeur de votre recherche.

Exemple 5:

Lister les fichiers qui sont exactement à 3 niveaux de profondeur.

$ find MyFiles/ -mindepth 3 -maxdepth 3 -type f

Cette commande cible les fichiers qui sont exactement à 3 niveaux de profondeur, comme file2 sous Dir2. Notez que file3 est en réalité à 4 niveaux de profondeur et ne serait pas inclus.

Recherche d'un fichier ou d'un répertoire spécifique

Dans nos exemples précédents, nous avons exploré comment rechercher tous les fichiers ou répertoires. Dans cette section, nous nous concentrons sur la manière de rechercher un fichier ou un dossier individuel.

Trouvez le fichier "file1" sous le répertoire racine et à un niveau en dessous (c'est-à-dire, racine et un sous-répertoire):

$ find /path/to/directory/ -maxdepth 2 -name file1

Remplacez /path/to/directory/ par le chemin de votre propre répertoire.

Trouvez le fichier "file2" sous le répertoire racine et deux niveaux plus bas (c'est-à-dire : racine, sous-répertoire niveau 2 et sous-répertoire niveau 3) :

$ find /path/to/directory/ -maxdepth 3 -name file2

Trouvez les fichiers nommés "file" entre le niveau de sous-répertoire 2 et 4 (c'est-à-dire à partir du niveau de sous-répertoire 3 jusqu'au niveau de sous-répertoire 5) :

$ find /path/to/directory/ -mindepth 3 -maxdepth 5 -name file

Trouvez tous les fichiers nommés "file3" dans tous les sous-répertoires à partir du répertoire racine :

$ find /path/to/directory/ -name file3

N'hésitez pas à adapter ces commandes à votre cas d'utilisation, et à explorer d'autres options proposées par la polyvalente commande find !

Comprendre les options mindepth et maxdepth avec une analogie simple

Si vous êtes débutant, vous pourriez trouver l'utilisation des options maxdepth et mindepth un peu déroutante. Voici une façon simple de se souvenir de ces options :

Considérez la profondeur comme une distance :

  • mindepth : C'est comme définir une distance minimale avant de commencer à compter ou à chercher. C'est comme dire : « Commencez à compter ou à chercher seulement après être allé au moins aussi profondément. »
  • maxdepth : C'est comme définir une distance maximale que vous êtes prêt à parcourir. C'est comme dire : « Arrêtez de compter ou de chercher une fois que vous êtes allé aussi loin. »

En utilisant une analogie :

Imaginez que vous explorez une forêt avec plusieurs couches de sentiers et de chemins. Chaque couche représente un niveau de profondeur différent :

  • profondeur_min : Avant de commencer à compter ou à explorer, vous décidez de la profondeur minimale à partir de laquelle vous êtes prêt à commencer. Par exemple, vous pourriez dire : « Je ne compterai ou n'explorerai rien tant que je ne serai pas au moins à 2 couches de profondeur dans la forêt. »
  • maxdepth : Vous décidez également de la profondeur maximale à laquelle vous êtes prêt à aller. Par exemple, vous pourriez dire : « Je ne compterai ni n'explorerai quoi que ce soit au-delà de 3 couches dans la forêt. »

Mettre le tout ensemble :

  • mindepth 2 : Cela signifie que vous commencez à compter ou à chercher à partir du point où vous avez au moins 2 couches de profondeur dans la forêt.
  • maxdepth 3 : Cela signifie que vous arrêtez de compter ou de chercher une fois que vous avez atteint 3 couches de profondeur dans la forêt.

Représentation visuelle :

Forest (Root)
├── Layer 1
│   ├── Layer 2
│   │   ├── Layer 3
│   │   │   ├── Layer 4
│   │   │   └── Layer 4
│   │   └── Layer 3
│   ├── Layer 2
│   └── Layer 2
└── Layer 1

Dans cette analogie de la forêt, vous pouvez ajuster votre exploration en réglant mindepth pour déterminer où commencer et maxdepth pour déterminer jusqu'où vous êtes prêt à aller.

J'espère que cette analogie aidera à rendre cela plus clair !

Maintenant, appliquons cela à notre exemple de répertoire :

Si vous voulez trouver des fichiers en partant du répertoire racine et en descendant seulement deux niveaux, utilisez :

$ find /path/to/directory/ -maxdepth 2 -name <filename>

Si vous voulez trouver des fichiers à partir du niveau 3 et descendant jusqu'au niveau 5, utilisez :

$ find /path/to/directory/ -mindepth 3 -maxdepth 5 -name <filename>

N'oubliez pas, maxdepth limite jusqu'où vous pouvez aller, et mindepth définit votre point de départ.

Bonne exploration du répertoire !

Conclusion

Dans ce tutoriel, nous avons appris à rechercher des fichiers et des répertoires dans une plage spécifiée en utilisant les options mindepth et maxdepth avec la commande find de Linux, ainsi que des exemples.

À travers ces exemples, vous pouvez voir comment les options maxdepth et mindepth permettent un contrôle précis de la profondeur de vos recherches dans un système de fichiers, vous permettant de cibler efficacement des zones spécifiques de votre structure de répertoires.

Lecture connexe :

  • Comment compter les fichiers et répertoires sous Linux
  • Comment afficher la structure de l'arborescence des répertoires sous Linux
  • Comment trouver le fichier le plus ancien dans un arbre de répertoires sous Linux
  • Copier des types de fichiers spécifiques tout en conservant la structure des répertoires sous Linux