命令以recursion方式查找当前目录中的所有视图私人文件
什么是clearcase命令以recursion方式查找当前目录中的所有视图私人文件?
通常的命令是基于cleartool ls
:
-
ct lsprivate
:但它只适用于dynamic视图,而不是快照视图 -
ct ls -rec -view_only
:至less可以在快照和dynamic视图中使用
但是,这两个列表也是你的签出文件。
如果你只想要私人文件,即跳过劫持/重叠/检出和符号链接 ,你需要过滤掉。
在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解决scheme有一些小的改动,可以作为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"
用rmdir /S /Q
和del /F
replace@echo
来执行这里描述的实际删除操作。 所以最后的脚本是:
@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文件,则脚本也会通过删除自身来清理:-)
我修改了@MilesHampson的版本,因为这对我来说返回的结果太多了,我想把它作为batch file来运行。
我的新文件不会在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
用上面的方法创build一个bat文件,把它放到你的根项目文件夹中并运行它。 它会显示那些不在源代码pipe理。
如果有人帮助其他人阅读这个问题,这里是VonC的Unix解决scheme,在Windows下Cygwin下运行一些小改动。
在Cygwin:
cleartool ls -rec | grep -v "Rule:" | grep -v "hijacked" | grep -v "eclipsed" | grep -v -- "-->"
Cygwin的行类似于VonC给出的Unix,但是需要注意最后一个grep的double-dash是必须的(并且不需要xargs)。
ct lsprivate -other
也会过滤出签出的文件
ct lsprivate -co
:列出所有签出的文件
ct lsprivate -do
:列出所有派生的对象文件
ct lsprivate -other
:列出所有其他私人文件
我遵循以上所有的解决scheme,这是伟大的命令。 我有更多的要求没有覆盖上面所以我修改了脚本多一点点以下
- 从列表中排除batch file(否则当前batch file也在列表中)
-
从列表中删除目录一般我感兴趣的文件
-
特别是对于java开发者,排除目标文件夹和jar文件,因为它们通常不被检入
-
删除了特定于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