2008-10-20 12 views
5

À l'aide de la commande find de ClearCase, comment trouver tous les fichiers d'un répertoire qui ne portent pas le nom pom.xml?Comment exclure des fichiers par leur nom dans une commande de recherche ClearCase?

Je voudrais passer d'autres options de sélection à la commande de recherche ClearCase, donc je préfèrerais ne pas exécuter une autre commande. J'utilise une version RedHat Linux de ClearCase. J'ai essayé "cleartool find! -name pom.xml -print" et cela ne fonctionne pas. PS: Je n'utilise pas ClearCase par choix, c'est obligatoire sur mon projet. C'est l'une des raisons pour lesquelles je déteste ça. J'ai lu les pages man à plusieurs reprises et je ne vois pas de façon claire de faire cela qui fonctionne!

+0

Trouvé une commande d'une ligne qui ne exactement ce dont vous avez besoin. Voir ci-dessous – VonC

+0

Vous êtes de retour! :-) Et de la "cocher" sur ma réponse, ce "one-liner" a fait l'affaire. Cool. – VonC

Répondre

2

Vous semblez oublier le -exec l'option de la commande cleartool trouver. En fait, cela vous permet d'exécuter d'autres commandes que celles de cleartool, y compris celles du système (comme un sh ou un script DOS).

Je sais que vous « préférez ne pas exécuter une autre commande », mais si cet autre script système fait partie de l'option exec d'une commande find ... on peut affirmer qu'il est encore une commande;)

donc créer un script simple comme:

('print.sh' Unix)

#!/bin/sh 
if [ $1 != $2 ] ; then 
    echo $1 
fi 

(fenêtres 'de print.bat')

@echo off 
if not "%1"=="%2" echo "%1" 

Placez ce script dans votre répertoire de recherche ou ajoutez le chemin du script à votre environnement% PATH% ou $ PATH.

Enfin, utilisez la commande find (avec toutes les other options en ce qui concerne le filtrage de la date, le filtrage de branche et ainsi de suite)

(Unix)

cleartool find . -nrec -type f -exec './print.sh $CLEARCASE_PN ./pom.xml' 

(fenêtres)

cleartool find . -nrec -type f -exec "print.bat %CLEARCASE_PN% .\pom.xml" 

Et voilà: "tous les fichiers dans un répertoire qui n'ont pas le nom pom.xml". Remarque: l'option '-type f' de la commande find vous permet de restreindre la recherche aux noms de fichiers uniquement (pas aux noms de répertoires).

+0

Très bien, sauf dans le cas où l'on parle de cleartool évaluant des milliers de fichiers (dans mon cas, des dizaines de milliers) de fichiers avec un certain annuaire. Je veux que cleartool ne regarde même pas un répertoire particulier. Si je l'ai tout évaluer et ensuite l'omettre plus tard avec une autre commande, après que cleartool ait fini de tout chercher, il faudra beaucoup plus de temps pour terminer. – searchengine27

3

wildcards ClearCase n'ont pas inversion (AFAIR) mais vous pouvez utiliser grep pour cette -

cleartool ls -short -nxname | grep -v pom.xml 
+0

Je ne pense pas que c'était le nom xml que l'OP utilisait ;-) – Tanktalus

3

Il existe une autre solution qui pourrait fonctionner pour vous. Essayez

ccapply task