2014-02-14 4 views
1

클리어 케이스를 처음 사용합니다. 나는 이것에 관한 임무를 가진다.쉘 스크립트를 사용하여 파일/디렉토리를 클리어 케이스로 체크 아웃하는 방법

디렉토리 경로 목록이 들어있는 Unix에서 Files.txt라는 파일이 있습니다.

예 : Files.txt

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

나는 Files.txt에 나열된 디렉토리 체크 아웃 또는하지 않을 경우 밖으로 찾고 싶어요. 누군가가 Files.txt에 나열된 디렉토리가 체크 아웃되었는지 여부를 확인하기 위해 쉘 스크립트 (도움이 될지 모르지만)가 있는지 알려줄 수 있습니까?

내가 유닉스 명령 줄에서 이것을 시도

,

명령 : CT 데 라

출력 :이 방법으로

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을 위해, 그것은 나를 위해 어렵다 Files.txt에 나열된 각 디렉터리에 대해 "ct des directory_name"출력을 구문 분석하고 Files.txt에 100 개 이상의 디렉터리 경로가 있기 때문에 나열된 모든 디렉터리가 체크 아웃되었는지 여부를 확인하십시오. Files.txt의 디렉터리가 체크 아웃 상태인지 여부를 확인하는 간단한 방법이 있습니까?

답변

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" 
+0

안녕하세요, Vonc, 솔루션 주셔서 감사합니다. 그것은 나를 위해 작동합니다. 제 2의 경우 또는 설명을 어디서 찾을 수 있는지에 대해 설명 해주십시오 (cleartool은 "% En % Rf \ n" "$ CLEARCASE_PN"). Thanks in Advance – 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) 요소 이름 ('% 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에서 체크 아웃 된 파일 (클리어 케이스)을 찾아내는 것이 었습니다. 그러나 제안에 감사드립니다. 감사합니다. – Petryanu

0

당신이 PowerShell 스크립트를 사용하는 경우 다음이 방법은 파일 체크 아웃 여부를 찾을 수있는 가장 쉬운 가정을 가지고 가정.

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

체크 아웃하면 true를 반환합니다. 그 다음 폴더를 체크 아웃입니다 true를 돌려주는 경우

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

아래에 주어진

폴더의 경우는 약간 다르다. 폴더가 체크 아웃이 아니면 출력 문자열이 없으므로 길이가 0이되고 명령은 false를 반환합니다.