GNU/Linux >> Tutoriels Linux >  >> Linux

Comment exclure un répertoire lors de la recherche de fichiers sous Linux

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.


Linux
  1. Recherche de fichiers dans la ligne de commande (Comment faire)

  2. Comment renommer des fichiers sous Linux

  3. Comment trouver un fichier sous Linux dans tous les répertoires de manière récursive

  4. Comment rechercher des fichiers avec la commande fd sous Linux

  5. Comment utiliser la commande Linux find pour rechercher des fichiers

Comment compter les fichiers dans le répertoire sous Linux

Comment rechercher des fichiers avec la commande fd sous Linux

Comment lister les fichiers de manière récursive sous Linux

Comment compter les fichiers dans le répertoire sous Linux

Comment compter le nombre de fichiers dans un répertoire sous Linux

Comment trouver des dossiers sous Linux