用于递归查找当前目录中的所有视图专用文件的命令

时间:2011-10-05 05:35:21

标签: command clearcase

什么是clearcase命令以递归方式查找当前目录中的所有视图私有文件?

6 个答案:

答案 0 :(得分:32)

通常的命令基于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

答案 1 :(得分:5)

如果它帮助其他人在这里阅读这个问题是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 /Qdel /F以执行here所述的实际删除操作。所以最后的脚本是:

@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文件,脚本将通过删除自身进行清理: - )

答案 2 :(得分:3)

我修改了@MilesHampson的版本,因为这为我返回了太多结果,我希望将其作为批处理文件运行。

我的新文件不在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

使用上述文件创建一个bat文件,将其放入根项目文件夹并运行它。它将显示那些不在源代码管理中的内容。

答案 3 :(得分:3)

如果它帮助其他人阅读这个问题,这里是VonC的Unix解决方案,在Windows上的Cygwin下运行一些小的改动。

在Cygwin:

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

Cygwin系列类似于VonC提供的Unix,但请注意最后一个grep上需要双击(并且不需要xargs)。

答案 4 :(得分:1)

ct lsprivate -other 

还会过滤掉签出的文件

ct lsprivate -co:列出所有签出文件

ct lsprivate -do:列出所有派生对象文件

ct lsprivate -other:列出所有其他私人文件

答案 5 :(得分:0)

我遵循了上述所有解决方案,这是很棒的命令。我有一些上面没有涉及的更多要求所以我用以下附加点修改了脚本

  1. 从列表中排除批处理文件(否则当前批处理文件也列在列表中)
  2. 从列表中删除目录,因为我对文件感兴趣

  3. 特别针对java开发人员,排除目标文件夹和jar文件 因为它们通常不会被检查

  4. 删除.classpath,.project 和.settings特定于Eclipse的文件夹(如果它们是相同的 作为项目/模块的水平)

    framework:
         session:
             cookie_lifetime: 3600
    
相关问题