命令以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 /Qdel /Freplace@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来运行。

我的新文件不会在debugobj文件夹,因此,我不需要看到这些文件夹的任何结果…我也只在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,这是伟大的命令。 我有更多的要求没有覆盖上面所以我修改了脚本多一点点以下

  1. 从列表中排除batch file(否则当前batch file也在列表中)
  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