如何查找是否使用shell脚本以明文形式签出文件/目录

时间:2014-02-14 06:47:25

标签: shell clearcase-ucm

我是使用clearcase的新手。我有一个关于这个的任务。

我在unix中有一个名为Files.txt的文件,其中包含目录路径列表。

示例:Files.txt

/a/b/c/d
/e/f/g/
i/j/k/l/m/n

我想知道,如果Files.txt中列出的目录是否已签出。有人可以帮助我使用shell脚本(如果有办法,我不确定)来查找是否检出Files.txt中列出的目录。

我在unix命令行中试过这个,

命令:ct des d

输出:

directory version "d/@@/main/0"
  created 2008-07-09T07:18:26+05:30 by Anna (anna1.dummy@abc)
  Element Protection:
    User : anna : rwx
    Group: dummy   : rwx
    Other:          : r-x
  element type: directory

这样,对于Files.txt,我很难通过“ct des directory_name”的输出解析Files.txt中列出的每个目录,并检查列出的所有目录是否都已检出,因为Files.txt包含100多个目录路径。 有没有一种简单的方法可以检查Files.txt中的目录是否结帐?

2 个答案:

答案 0 :(得分:2)

你需要遍历File.txt的每一行,并为CHECKEDOUT每一行描述和grep。

#!/bin/sh

lines=$(cat Files.txt)
while read -r line; do
  # do your descr there
  cleartool descr -l ${line}|grep CHECKEDOUT
done <<< "${lines}

另一种方法是查找所有结帐文件夹,并为每个文件夹点击Files.txt

cleartool find . -type d -exec 'cleartool describe -fmt "%En %Rf\n" "$CLEARCASE_PN"' | grep "CHECKEDOUT" 

答案 1 :(得分:0)

假设您使用PowerShell脚本,那么这种方式最容易找到文件是否结帐。

(cleartool ls -short "<FileFullPath>").EndsWith("CHECKEDOUT")

如果是结帐,它将返回true。

对于文件夹,它有点不同,如下所示

(cleartool lscheckout -d "<FolderPath>").Length -gt 0

如果返回true,则文件夹结帐。如果文件夹没有签出,则没有输出字符串,因此长度将为零,命令将返回false。