8
votes

Comment puis-je empêcher la recherche d'impression de dossiers?

J'ai une commande trouver que je fonctionne pour rechercher des fichiers dont les noms contiennent foo .

Je veux sauter le .git . annuaire. La commande ci-dessous fonctionne sauf IT imprime un gênant .git tout moment il saute un .git répertoire: xxx

Comment puis-je empêcher le sauté "code> .git répertoires de Impression sur la sortie standard?


3 commentaires

La syntaxe (-Name .git) n'a aucun sens


Droite - je pense que ça devrait être \ (-Name .git \), correct?


Voir aussi Cette réponse et remplacez "svn" avec "git".


3 Réponses :


0
votes

Essayez celui-ci:

find . ( -name .git ) -prune -printf '' -o -name '*foo*' -print


4 commentaires

Ok - j'ai constaté que je n'ai pas besoin de mettre le -printf '' - Je n'ai que je n'ai que de mettre le -print à l'arrière du commandement! Par exemple, cela fonctionne: trouver. (-Name .git) -Prune -O -Name ' foo ' -Ilt Merci!


Utiliser un grep après la recherche est un mauvais tour pour de nombreuses raisons. Envisagez d'utiliser les options intégrées dans la recherche de filtrage


Comme @TONIHOMEDESAUNAnONNONNAUNEAUN, en utilisant grep est une solution médiocre - notamment parce que l'exemple que vous donnez ignorera tous les fichiers correspondant à la chaîne .git - pas seulement répertoires. Le pure Recherche n'est pas spécifique aux répertoires, d'ignorer les fichiers nommés .git


trouver. (-Name .git) -Prune -False -O -Name '* FOO *' fonctionne pour moi



10
votes

donc juste pour une meilleure visibilité: xxx

omet également des fichiers .gitignore; Notez la trailing -Print à omettre l'impression d'omettre, -Prune des arrêts qui en descendent, mais sans-emprette l'impression, elle est néanmoins. Tordu c;


1 commentaires

Voici comment trouver des annuaires: trouver. -Name '.git *' -PRune -O -Oname '* FOO *' -MAXDEPTH 4 -TYPE D -PRINT



4
votes
find . -not \( -wholename "./.git" -prune \) -name "*foo*"

0 commentaires