Cette question a déjà des réponses ici :

Commentaires

  • Là ' sa douzaine de questions sur les problèmes dutilisation de -prune: cela peut être un peu déroutant. ceci sur stackoverflow explique également pourquoi il ' est si ennuyeux à utiliser.
  • Même sil sagit dune dupe, la meilleure réponse ici est plus claire que la meilleure réponse à la question " correcte ".
  • Hmm, " find -prune isn ' t travaille pour moi " sons sûrs différent de " comment exclure des répertoires de la sortie de recherche? " pour moi …
  • @SamB Daccord , cela peut ' être un doublon.

Réponse

Voici à quoi sert loption -prune:

find . -type d -name "avoid_this_directory_please" -prune -o -type f -print 

Cela dit essentiellement « sil y a » un répertoire appelé avoid_this_directory_please, ne le saisissez pas, sinon, sil « sagit dun fichier normal, affichez son chemin ».

Commentaires

  • Jallais écrire la même chose, légèrement différemment, comme find . \( -type d -name 'avoid_this_directory_please' -prune \) -o \( -type f -print \), mais jaime mieux votre syntaxe. Merci.
  • @TimKennedy Vous auriez probablement besoin des parenthèses si vous vouliez faire find . -type d \( -name "A" -o -name "B" \) -prune -o -type f -print.
  • bon point. je ne sais même pas où et quand jai appris à le faire avec les parenthèses. cet âge se perd dans la nuit des temps. 🙂
  • Ceci éliminera bien sûr tous les répertoires appelés avoid_this_directory_please nimporte où dans larborescence, pas seulement ceux de niveau supérieur. -path permettrait plus de contrôle dans ce domaine, comme la page de manuel ( cité ci-dessous par Xen2050) indique.
  • Je ne savais pas que -prune considérait tout après le premier find, y compris -type et a été intrigué par léchec de lélagage des répertoires avec find / -type f -path /proc -prune -o -name foo -print. Voir à la fois -type d et -type f dans la même commande est ce qui la fait cliquer pour moi. Maintenant, je me sens enfin en confiance pour utiliser find, merci.

Réponse

Pour éviter un répertoire, essayez le test -path:

find . -type f ! -path "*/avoid_this_directory_please/*" 

Commentaires

  • Notez que alors que cela empêchera les fichiers à lintérieur de avoid_this_directory_please dêtre sélectionnés (à moins que leur chemin ne contienne des caractères non valides), cela nempêchera pas find de descendre là-dedans . Cest ' pourquoi -prune est mieux ici.
  • Cest tellement mieux que dutiliser prune. Je dois toujours lire pendant une demi-heure pour comprendre ce que je ne veux pas ' pour trouver, puis associer avec la logique OR pour obtenir les fichiers que je veux.
  • @Merlin Cela dépend évidemment de ce que vous voulez réaliser. Avec -prune, find a gagné ' t même regarder dans les chemins sélectionnés, tandis quavec ! -path, il entrerait toujours le chemin et examinerait tout.

Réponse

De man find, dans la section -path, combinant apparemment les 2 autres réponses

To ignore a whole directory tree, use -prune rather than checking every file in the tree. For example, to skip the directory `src/emacs" and all files and directories under it, and print the names of the other files found, do something like this: find . -path ./src/emacs -prune -o -print 

Réponse

Essayez ceci

find -name "*.js" -not -path "./directory/*" 

Commentaires

  • Cela fonctionne si seulement vous recherchez un type dextension. Les opérations suivantes échoueront: find -name "*.js" -o -name "*.css" -not -path "./directory/*"

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *