Comment exclure des répertoires de la recherche de la commande Find sous Linux
Dans cet article, nous allons approfondir les méthodes permettant d’exclure explicitement les répertoires de la recherche de la commande find
sous Linux. La commande find
est un utilitaire puissant pour rechercher des fichiers et des répertoires dans une hiérarchie de répertoires. Cependant, dans certains cas, vous pouvez exclure certains annuaires de votre recherche afin d’accélérer le processus ou d’éviter des résultats non pertinents. Nous allons explorer différentes options et fournir des exemples pratiques en utilisant une structure de répertoire sandbox.
Dans ce tutoriel, vous allez apprendre :
- Comment utiliser l’option
-prune
pour exclure des répertoires - Combiner
-prune
avec d’autres optionsde recherche
- Utilisation de plusieurs options
-prune
pour les exclusions complexes - Comment exclure des répertoires à l’aide de chemins d’accès
- Exclusion des répertoires en fonction de modèles
- Utilisation avancée avec des opérateurs logiques
- Exemples concrets avec différents besoins d’exclusion
- Comprendre l’impact des exclusions sur les performances
Exclusion des répertoires de la recherche de la commande Find
Lorsque vous utilisez la commande find
, vous devrez peut-être exclure des répertoires spécifiques de vos résultats de recherche. Cela peut être particulièrement utile lorsqu’il s’agit de grandes structures de répertoires ou lorsque vous souhaitez vous concentrer sur des zones spécifiques de votre système de fichiers. Voici quelques méthodes pour y parvenir, illustrées par des exemples basés sur la structure de bac à sable suivante :
.
├── dir1
│ ├── dir2
│ │ └── dir3
│ │ └── file2
│ └── file1
├── dir4
│ └── file3
└── dir5
└── dir6
├── dir4
│ └── file4
└── file4
Utilisation de -prune pour exclure un répertoire : L’option
-prune
peut être utilisée pour exclure un répertoire et son contenu de la recherche.find . -path "./dir1" -prune -o -print
Cette commande exclura
dir1
et son contenu des résultats de recherche. L’option-path
spécifie le répertoire à exclure, et l’option-prune
empêchefind
de descendre dans ce répertoire. L’opérateur-o
(OR) permet de poursuivre la recherche dans d’autres répertoires et-print
affiche les résultats.Exclusion de plusieurs répertoires : vous pouvez exclure plusieurs répertoires en combinant plusieurs options
-prune
.find . -path "./dir1" -prune -o -path "./dir5" -prune -o -print
Cette commande exclut
dir1
etdir5
des résultats de recherche.Exclusion de répertoires par modèle de nom : utilisez l’option
-name
pour exclure les répertoires qui correspondent à un modèle spécifique.find . -name "dir4" -prune -o -print
Cette commande exclut tous les répertoires nommés
dir4
des résultats de recherche.Combiner -prune avec d’autres options de recherche : Vous pouvez combiner
-prune
avec d’autres options derecherche
pour affiner votre recherche.find . -path "./dir1" -prune -o -type f -name "*.txt" -print
-
Exclusion de répertoires à l’aide d’un modèle complexe : utilisez une combinaison d’options pour les exclusions plus complexes.
find . \( -path "./dir1" -o -path "./dir5" \) -prune -o -type f -print
Utilisation de l’option -not : L’option
-not
peut également être utilisée pour l’exclusion.find . -not -path "./dir1/*" -print
Cette commande exclut tous les fichiers et répertoires sous
dir1
.Exclusion des répertoires en fonction de la profondeur : contrôlez la profondeur de la recherche pour exclure les répertoires plus profonds.
find . -maxdepth 2 -path "./dir1/dir2" -prune -o -print
Utilisation avancée avec des opérateurs logiques : combinez des opérateurs logiques pour des exclusions avancées.
find . -path "./dir1" -prune -o -type f \( -name "*.sh" -o -name "*.py" \) -print
Cette commande exclut dir1
et recherche .txt
fichiers dans d’autres répertoires.
Cette commande exclut à la fois dir1
et dir5
et répertorie tous les fichiers dans d’autres répertoires.
Cette commande exclut dir2
à l’intérieur de dir1
si la profondeur est supérieure à 2.
Cette commande exclut dir1
et recherche les fichiers .sh
et .py
dans d’autres répertoires.
Conclusion
L’exclusion de répertoires de la recherche de la commande find
peut rationaliser considérablement vos recherches de fichiers et améliorer l’efficacité. En comprenant et en utilisant des options telles que -prune
, -path
et les opérateurs logiques, vous pouvez personnaliser vos recherches pour répondre à des besoins spécifiques et éviter les résultats non pertinents. Exercez-vous avec les exemples fournis et adaptez-les à vos propres structures de répertoires et à vos exigences de recherche.