ClearCase:查找只有一个特定标签的文件,而不是更多

Jan*_*Jan 6 clearcase labels cleartool

我想在ClearCase中找到标有特定标签但没有设置任何其他标签的文件.

例如,如果我有像这样标记的文件:

file1 LBL_A, LBL_B
file2 LBL_A
Run Code Online (Sandbox Code Playgroud)

我想有一个查询,只给我file2而不是file1.

有没有办法用cleartool找到这个?如果单个查询无法做到这一点,我也很高兴有任何想法如何在几个步骤中执行此操作(我将从perl脚本调用cleartool,因此保存文件列表很容易暂时并在它们上运行更多命令).

非常感谢提前!

一月

hlo*_*dal 7

假设LBL_A是您想要运行的(唯一)标签

cleartool find /some/dir -version 'lbtype(LBL_A)' -print | xargs cleartool describe -fmt "%n: %l"
Run Code Online (Sandbox Code Playgroud)

应该给

file1: (LBL_A, LBL_B)
file2: (LBL_A)
Run Code Online (Sandbox Code Playgroud)

作为输出,然后您可以检查perl脚本或过滤sed -n 's/\(.*\): (LBL_A)/\1/p'(假设文件名中没有冒号).

更新:正如VonC正确指出的那样,对于包含空格的文件,上面的命令将失败.要将该运行处理为:

cleartool find ... -print | tr '\012' '\000' | xargs -0 cleartool ....
Run Code Online (Sandbox Code Playgroud)

这会将换行符转换为ascii null,然后让xargs将其用作分隔符.


Gar*_*ren 6

您可以直接执行此操作而无需管道:

cleartool find . -ver "lbtype(LBL_A) && !lbtype(LBL_B)" -print
Run Code Online (Sandbox Code Playgroud)