web-dev-qa-db-ja.com

現在のディレクトリ内のすべてのプライベートビューファイルを再帰的に検索するコマンド

現在のディレクトリ内のすべてのビュープライベートファイルを再帰的に見つけるためのclearcaseコマンドとは何ですか?

28
eeerahul

通常のコマンドは cleartool ls

  • ct lsprivate:ただし、動的ビュー専用であり、スナップショットビューではありません
  • ct ls -rec -view_only:少なくとも、スナップショットビューと動的ビューの両方で機能します

ただし、両方ともチェックアウトしたファイルをリストします。

privateファイルのみが必要な場合、つまりhijacked/eclipsed/checked-outとsymlinksをスキップする場合、それらを除外する必要があります。

Windowsでは、次のようになります。

for /F "usebackq delims=" %i in (`cleartool ls  -rec ^| find /V "Rule:" ^| find /V "hijacked" ^| find /V "eclipsed" ^| find /V "-->"`) do @echo "%i"

Unixの場合:

cleartool ls -rec | grep -v "Rule:" | grep -v "hijacked" | grep -v "eclipsed" | grep -v "-->" | xargs echo
32
VonC

それがこの質問を読んでいる他の誰かを助ける場合に備えて、ここでVonCのWindowsソリューションがいくつかあり、Windowsスクリプトとして実行するためにいくつかのマイナーな変更が加えられています。

@echo off
setlocal
for /F "usebackq delims=" %%A in (`cleartool ls  -rec ^| find /V "Rule:" ^| find /V "hijacked" ^| find /V "eclipsed" ^| find /V "-->"`) do @echo "%%A"

置換@echormdir /S /Qおよびdel /Fここ の説明に従って実際の削除を行います。したがって、最終的なスクリプトは次のとおりです。

@echo off
setlocal
for /F "usebackq delims=" %%A in (`cleartool ls  -rec ^| find /V "Rule:" ^| find /V "hijacked" ^| find /V "eclipsed" ^| find /V "-->"`) do rmdir /S /Q "%%A"
for /F "usebackq delims=" %%A in (`cleartool ls  -rec ^| find /V "Rule:" ^| find /V "hijacked" ^| find /V "eclipsed" ^| find /V "-->"`) do del /F "%%A"

クリーンアップするビューの要素の下に.batファイルとして保存すると、スクリプトもそれ自体を削除してクリーンアップします:-)

5
MilesHampson

@MilesHampsonでバージョンを修正しました。結果が多すぎるため、これをバッチファイルとして実行したいと考えています。

私の新しいファイルはdebugまたはobjフォルダーに含まれないため、これらのフォルダーの結果を表示する必要はありません...また、C#でのみ作業しています。だから私が見る必要があるのはそれだけです。

@echo off
setlocal

@echo Searching, please wait as this can take a while...

for /F "usebackq delims=" %%A in (`cleartool ls  -rec ^| find /V "Rule:" ^| find /V "hijacked" ^| find /V "eclipsed" ^| find /V "-->" ^| find /V "obj" ^| find /V "debug"`) do  ( 
  if "%%~xA"==".cs" echo %%A
  )
)

@echo === === === === === Search Complete === === === === === === 

pause

上記を使用してbatファイルを作成し、ルートプロジェクトフォルダーにドロップして実行します。ソース管理にないものを表示します。

3
Dave

この質問を読んでいる人を助けるために、WindowsのCygwinで実行するためにいくつかのマイナーな変更を加えたVonCのUnixソリューションを次に示します。

Cygwinの場合:

cleartool ls -rec | grep -v "Rule:" | grep -v "hijacked" | grep -v "eclipsed" | grep -v -- "-->" 

Cygwinの行はVonCが提供するUnixに似ていますが、最後のgrepに二重ダッシュが必要であることに注意してください(xargsは不要です)。

3
iwan2know
ct lsprivate -other 

チェックアウトされたファイルも除外されます

ct lsprivate -co:チェックアウトされたすべてのファイルを一覧表示します

ct lsprivate -do:すべての派生オブジェクトファイルを一覧表示します

ct lsprivate -other:他のすべてのプライベートファイルをリストする

2
Otzen

私は上記のすべての解決策に従いましたが、それは素晴らしいコマンドです。上記でカバーされていないいくつかの要件があったので、以下の追加ポイントでスクリプトを少し修正しました

  1. リストから除外されたバッチファイル(そうでない場合、現在のバッチファイルもリストに含まれます)
  2. 一般にファイルに関心があるため、リストからディレクトリを削除しました

  3. 特別にJava開発者向け。除外されたターゲットフォルダとjarファイルは、一般にチェックインされないため

  4. Eclipseに固有の.classpath、.projectおよび.settingsフォルダーを削除しました(プロジェクト/モジュールと同じレベルの場合)。

    @echo off
    setlocal
    
    @echo.
    @echo Searching, please wait as this can take a while...
    @echo.
    for /F "usebackq delims=" %%i in (`cleartool ls  -rec ^| find /V "Rule:" ^| find /V "hijacked" ^| find /V "eclipsed" ^| find /V "-->" ^| find /V ".settings" ^| find /V "jar" ^| find /V "keep" ^| find /V "target" ^| find /V ".classpath"  ^| find /V ".project" ^| find /V "%~n0" `) do ( if not exist %%i\* @echo "%%i")
    
    @echo.
    @echo === === === === === Search Complete === === === === === === 
    @echo.
    @echo.
    
    pause
    
0
ashah