2010-11-15 7 views
3

J'essaie de trouver tous les fichiers qui ne sont pas à jour par rapport à CVS. Comme notre structure CVS est cassée (elle ne se recourt pas bien dans certains répertoires) J'essaye de contourner cela avec find pour le moment.Exclure certains modèles de fichiers et répertoires de Find

Ce que j'ai maintenant ceci:

for i in `find . -not \(-name "*\.jpg" \) -path './bookshop/mediaimg' -prune -o -path '*/CVS*' -prune -o -path './files' -prune -o -path './images/cms' -prune -o -path './internal' -prune -o -path './limesurvey171plus_build5638' -prune -o -path './gallery2' -prune -o -print `; do cvs status "$i" |grep Status ; done &>~/output.txt 

Mais en quelque sorte ma tentative d'exclure les images (jpg dans ce cas) ne fonctionne pas, ils affichent toujours. Quelqu'un at-il une suggestion sur la façon de les sortir de mes résultats de trouver?

Répondre

2

Cela échoue pour la même raison que le mélange booléen ET et OU échoue toujours.

Ce que vous dites ici est vraiment (en pseudo-code):

If (
    File Not Named '*.jpg' AND 
    Path Matches './bookshop/mediaimg' AND 
    Prone OR 
    Path Matches '*/CVS*' AND 
    Prune OR 
    Path Matches './files' AND 
    Prune OR 
    Path Matches './images/cms' AND 
    Prune OR 
    Path Matches './internal' AND 
    Prune OR 
    Path Matches './limesurvey171plus_build5638' AND 
    Prune OR 
    Path Matches './gallery2' AND 
    Prune OR 
    Print 
) 

Maintenant, impression retourne toujours vrai, et je pense que pruneau fait aussi bien, vous voyez qu'aucun des ANDs matière s'il y a des correspondances OR. L'application soigneuse de parenthèses donnera probablement les résultats que vous recherchez.

+0

merci, vraiment utile – Maarten

Questions connexes