在当前目录中递归查找所有视图私有文件的清晰度命令是什么?
通常使用的命令基于cleartool ls
:
ct lsprivate
:但它仅适用于动态视图,而不适用于快照视图ct ls -rec -view_only
:至少在快照和动态视图中都有效然而,这两个列表也列出了您已检出的文件。
如果您只想要私有文件,即跳过被劫持/遮蔽/检出和符号链接,则需要将它们筛选掉。
在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
如果对其他阅读这篇问题的人有所帮助,这里是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"
将@echo
替换为rmdir /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"
cleartool ls -rec | grep -v "Rule:" | grep -v "hijacked" | grep -v "eclipsed" | grep -v -- "-->"
由于@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
ct lsprivate -other
还可以过滤掉已检出的文件
ct lsprivate -co
:列出所有已检出的文件
ct lsprivate -do
:列出所有派生对象文件
ct lsprivate -other
:列出所有其他私有文件
我按照以上所有解决方案,这是一个很好的命令。但我有一些更多的要求,以上没有涉及到,所以我对脚本进行了一些修改,并添加了以下附加点。
从列表中删除目录,因为我通常只关心文件
专门针对Java开发人员,排除了target文件夹和jar文件,因为它们通常不会被检查
如果.classpath、.project和.settings文件夹与项目/模块位于同一级别,则删除这些文件夹,这是特定于Eclipse的
@echo off
setlocal
@echo.
@echo 正在搜索,请稍等...
@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 === === === === === 搜索完成 === === === === === ===
@echo.
@echo.
pause