2014-02-14 37 views
1

我是使用clearcase的新手。我有一個這方面的任務。如何查找使用shell腳本以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 ([email protected]) 
    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

你需要循環你的File.txt的每一行,併爲每一個描述和grep爲CHECKEDOUT

#!/bin/sh 

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

另一種方法是尋找所有的checkout出來的文件夾,併爲每一個grep的它從Files.txt

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

嗨Vonc,謝謝你的解決方案。這個對我有用。請解釋我在第二種情況下做了什麼(cleartool describe -fmt「%En%Rf \ n」「$ CLEARCASE_PN」),或者我可以在哪裏找到它的解釋。在此先感謝 – Petryanu

+1

@Petryanu它使用'fmt_ccase'(http://pic.dhe.ibm.com/infocenter/cchelp/v7r1m2/topic/com.ibm.rational.clearcase.cc_ref.doc/topics/fmt_ccase.htm)爲了顯示Fidel的元素名稱('%En')和結賬狀態('%Rf') – VonC

-2

假設你Files.txt具有完整路徑(不是相對路徑)

while read line 
do 
    //checking the directory existence for every line of the Files.txt. 
    test -d "$line" && echo "$line Directory found" || echo "$line Directory not found" 
done < Files.txt 
+0

,我的問題是在Files.txt中找出已簽出的文件(clearcase)。但是,謝謝你的建議。我很感激。 – Petryanu

0

假設如果你正在使用PowerShell腳本則這種方式是最容易找到的文件是否結賬。

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

如果是結賬,它將返回true。

對於文件夾是有點不同以下

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

給出如果返回true,則該文件夾是結賬。如果該文件夾沒有簽出,則不會有輸出字符串,所以長度將爲零,命令將返回false。

相關問題