Sous Linux, la commande find est utilisée pour rechercher des fichiers ou des dossiers à partir de la ligne de commande. C'est une commande complexe qui comporte un grand nombre d'options, d'arguments et de modes.
L'utilisation la plus courante de la commande de recherche consiste à rechercher des fichiers à l'aide d'une expression régulière ou du ou des noms de fichiers complets à rechercher.
[ Vous pourriez également aimer :Comment trouver des fichiers contenant une chaîne de texte spécifique sous Linux ]
Par exemple, pour rechercher des fichiers dont le nom commence par 'file_' , nous pouvons exécuter :
$ find . -name 'file_*'
Comme vous pouvez le voir ci-dessus, il affiche les chemins complets des fichiers renvoyés par la recherche. Ici, le '.'
implique le répertoire courant . Find recherchera le modèle de nom de fichier dans le répertoire courant, tous les sous-répertoires, etc. jusqu'au niveau le plus profond de la structure du fichier. De même, vous pouvez avoir n'importe quel autre répertoire à la place de '.'
.
Exclure un répertoire lors de la recherche de fichiers
Désormais, il peut y avoir des scénarios dans lesquels un utilisateur est sûr qu'un ou plusieurs dossiers ne contiennent pas le fichier à rechercher. Par conséquent, il est judicieux d'exclure ces dossiers de la recherche, afin que la commande renvoie les résultats plus rapidement.
Pour exclure un répertoire de la recherche, utilisez le '-prune'
argument :
$ find . -name './test' -prune -o -name 'file_*'
Analysons d'abord ce qui se passe ici.
La partie "-name './test' -prune"
implique :exclure le dossier ‘test’ de la recherche. Après cela, '-o'
indique à la commande :quoi d'autre doit être fait une fois que la commande exclut 'test' . Nous passons simplement le modèle décrit dans l'exemple précédent ici.
Ce modèle s'exécutera désormais sur tous les dossiers, sauf 'test' .
Vous pouvez maintenant voir que la recherche exclut bien le dossier 'test' . Cependant, le nom du dossier lui-même est imprimé.
Exclure un nom de répertoire de la sortie de recherche
Pour éviter cela, ajoutez simplement '-print'
à la fin. Cette option exclura le nom du répertoire de la sortie.
$ find . -name './test' -prune -o -name 'file_*' -print
Le modèle a maintenant recherché des fichiers dans le répertoire actuel et exclu le 'test' répertoire.
Conclusion
Dans cet article, nous avons vu comment exclure un répertoire lors de la recherche de fichiers à l'aide de la commande find. Notez que les exemples donnés dans cet article recherchent des fichiers en fonction des noms de fichiers ('-name')
. Il existe de nombreuses autres façons de rechercher des fichiers dans la commande find. Assurez-vous de vous référer à la page de manuel de la commande de recherche pour les explorer en profondeur.
Merci d'avoir lu et n'hésitez pas à laisser des commentaires ou des questions dans les commentaires ci-dessous.