【问题标题】:How to exclude files by name in a ClearCase find command?如何在 ClearCase 查找命令中按名称排除文件?
【发布时间】:2008-10-20 14:30:03
【问题描述】:

使用 ClearCase 查找命令,我如何查找目录中不具有名称 pom.xml 的所有文件?

我想将其他选择选项传递给 ClearCase 查找命令,因此我不想执行其他命令。

我正在使用 RedHat linux 版本的 ClearCase。我试过“cleartool find!-name pom.xml -print”,但不起作用。

PS:我不会选择使用 ClearCase,它是我的项目的强制要求。这是我讨厌它的原因之一。我已经多次阅读手册页,但没有明确的方法可以做到这一点!

【问题讨论】:

  • 找到了一个可以满足您需求的单行命令。见下文
  • 你回来了! :-) 从我的回答中的“勾号”来看,这个“单线”已经成功了。酷。

标签: version-control clearcase


【解决方案1】:

ClearCase 通配符没有反转(AFAIR),但您可以使用 grep 来实现这一点 -

cleartool ls -short -nxname | grep -v pom.xml

【讨论】:

  • 我认为这不是 OP 使用的 xml 名称 ;-)
【解决方案2】:

还有另一种可能对您有用的解决方案。试试

ccapply task

【讨论】:

    【解决方案3】:

    您似乎忘记了 cleartool find 命令的 -exec 选项。

    它确实允许您执行除 cleartool 之外的其他命令,包括系统命令(如 sh 或 DOS 脚本)。

    我知道你会“宁愿不执行另一个命令”,但如果那个其他系统脚本是 find 命令的 exec 选项的一部分......可以说它仍然是 一个命令 ;)

    所以创建一个简单的脚本,如:

    (Unix 'print.sh')

    #!/bin/sh
    if [ $1 != $2 ] ; then
      echo $1
    fi
    

    (windows 'print.bat')

    @echo off
    if not "%1"=="%2" echo "%1" 
    

    将该脚本放在您的搜索目录中,或者将脚本路径添加到您的 %PATH% 或 $PATH 环境中。

    最后,使用 find 命令(与所有other options 有关的日期过滤、分支过滤等)

    (Unix)

    cleartool find . -nrec -type f -exec './print.sh $CLEARCASE_PN ./pom.xml'
    

    (窗口)

    cleartool find . -nrec -type f -exec "print.bat %CLEARCASE_PN% .\pom.xml"
    

    这里是:“目录中没有名称 pom.xml 的所有文件”。

    注意:find 命令的“-type f”选项允许您将搜索限制为仅搜索文件名(而不是目录名)。

    【讨论】:

    • 这很好,除了我们谈论 cleartool 评估具有特定目录的数千个文件(在我的例子中是数万个)文件的情况。我希望 cleartool 甚至不查看特定目录。如果我让它评估所有内容,然后稍后用另一个命令省略它,那么在 cleartool 完成搜索所有内容后,将需要更长的时间才能完成。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-20
    • 1970-01-01
    • 1970-01-01
    • 2021-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多