【问题标题】:How to delete file elements by file extension in ClearCase?如何在 ClearCase 中按文件扩展名删除文件元素?
【发布时间】:2019-02-13 21:55:05
【问题描述】:

我有大量的xxx.cmd 文件位于多个文件夹中(例如child1child2child3 等),它们有一个父文件夹parent

是否有我可以在 parent文件夹上执行的 cleartool 命令删除所有子文件夹中的所有 .cmd 文件?

【问题讨论】:

    标签: version-control clearcase


    【解决方案1】:

    不容易,因为在执行cleartool rmname 之前,您需要检出任何父目录,包括这些文件。

    最简单的方法是:

    • 复制所有元素在视图之外
    • 删除所有 *.cmd 文件(使用您想要的任何查找实用程序,与 clearcase 无关)
    • clearfsimport 将这些文件返回到您的视图中(减去已删除的 *.cmd 文件),使用选项 -rmname(“mirror clearfsimport”):

      • 现有的文件都不会受到影响
      • 目标中存在的 *.cmd 文件(您的 ClearCase 视图),但不再存在于源(您清理和删除这些文件的备份)中,将被删除(rmnamed) , 为您完成了对父目录的严格检出检查。

      --rmname

    对于所有属于目录的源名称参数,对已在 VOB 中但不存在于源目录中的元素执行rmname 操作
    如果与-recurse 结合使用,则在遍历的所有目录中执行此rmname 操作。
    如果与-downcase 结合使用,则在查找VOB 中匹配的名称之前执行downcase 操作。

    【讨论】:

    • 不完全是我想要的,但它确实可以,谢谢!
    【解决方案2】:

    我今天也有同样的需求,对使用clearfsimport 的提议不太满意,因为需要制作本地副本。这是我在 bash 环境中所做的(我在 windows 下的 msys):

    1. 使用find列出所有要删除的文件:
      find parent -name "*.cmd" | tee to_remove_list.txt
    2. 提取文件夹列表:
      sort to_remove_list.txt | xargs -i dirname {} | uniq | tee to_checkout.txt
    3. 签出所有这些文件夹:
      cat to_checkout.txt | xargs -i cleartool co -nc {}
    4. 删除文件:
      cat to_remove_list.txt | xargs -i cleartool rm {}
    5. 签入所有文件夹:
      cat to_checkout.txt | xargs -i cleartool ci -nc {}
    6. (可选)清理文件夹和文件列表:
      rm to_remove_list.txt to_checkout.txt

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-10-31
      • 1970-01-01
      • 1970-01-01
      • 2020-03-25
      • 2012-06-29
      • 2021-12-13
      • 2012-05-12
      相关资源
      最近更新 更多