2008-10-20 8 views
5

Mit dem Befehl find Clearcase, wie finde ich alle Dateien in einem Verzeichnis, das den Namen pom.xml nicht hat?Wie können Dateien in einem ClearCase-Suchbefehl nach Name ausgeschlossen werden?

Ich mag würde andere Auswahlmöglichkeiten an den Clearcase Befehl find übergeben, so würde ich es vorziehen, nicht einen anderen Befehl auszuführen.

Ich bin mit einer RedHat Linux-Version von Clearcase. Ich habe versucht "cleartool find! -name pom.xml -print" und das funktioniert nicht.

PS: Ich benutze ClearCase nicht von Wahl, es ist in meinem Projekt beauftragt. Dies ist einer der Gründe, warum ich es hasse. Ich habe die Manpages mehrmals gelesen und sehe keinen klaren Weg, dies zu tun!

+0

Gefunden einen einzeiligen Befehl, der nur das tun, was Sie brauchen. Siehe unten. – VonC

+0

Sie sind zurück! :-) Und vom "Zecken" auf meiner Antwort hat dieser "Einzeiler" den Trick gemacht. Cool. – VonC

Antwort

2

Sie scheinen die -exec Option des Cleartool finden Befehl zu vergessen.

Es erlaubt Ihnen tatsächlich, andere Befehle als cleartool diejenigen auszuführen, einschließlich System-Einsen (wie ein sh oder DOS-Skript).

Ich weiß, Sie würden „lieber nicht einen anderen Befehl auszuführen“, aber wenn das andere System Skript Teil der Option exec eines Befehls find ist ... kann man argumentieren, es noch ein Befehl ist;)

(Unix 'print.sh')

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

(Fenster 'print.bat')

:

So ein einfaches Skript wie erstellen

Setzen Sie dieses Skript entweder in Ihr Suchverzeichnis oder fügen Sie den Skriptpfad zu Ihrer% PATH% - oder $ PATH-Umgebung hinzu.

Und schließlich, verwenden Sie den Befehl find (mit allen other options bezüglich Datum Filterung, Zweig Filterung usw.)

(Unix)

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

(Fenster)

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

Und hier gehts: "alle Dateien in einem Verzeichnis, die nicht den Namen pom.xml haben".

Hinweis: Mit der Option "-type f" des Befehls find können Sie die Suche auf Dateinamen beschränken (nicht auf Verzeichnisnamen).

+0

Das ist in Ordnung, außer für Fälle, in denen wir über cleartool sprechen, das Tausende von Dateien (in meinem Fall Zehntausende) von Dateien mit einem bestimmten auswertet Verzeichnis. Ich möchte, dass Cleartool nicht einmal auf ein bestimmtes Verzeichnis schaut. Wenn ich alles evaluiere und es später mit einem anderen Befehl weglasse, nachdem cleartool alles durchsucht hat, wird es viel länger dauern. – searchengine27

3

Clearcase Platzhalter haben keine Inversion (AFAIR), aber Sie können grep für diesen Einsatz -

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

Ich glaube nicht, dass das der XML-Name war, den das OP benutzte ;-) – Tanktalus

3

Es gibt eine andere Lösung, die für Sie arbeiten könnte. Versuchen

ccapply task