如何在ClearCase中通过文件扩展名删除文件元素?

问题描述 投票:2回答:2

我有大量的xxx.cmd文件,坐在多个文件夹(例如child1child2child3等),他们有一个父文件夹parent

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

version-control clearcase
2个回答
2
投票

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

最简单的方法是:

  • 复制视图外的所有元素。
  • 删除所有* .cmd文件(使用您想要的任何查找实用程序,与clearcase无关)
  • clearfsimport将这些文件备份到您的视图中(减去删除的* .cmd文件),使用选项-rmname(“mirror clearfsimport”): 没有任何现有文件会受到影响 目标中存在的* .cmd文件(您的ClearCase视图),但不再存在于源(您清理和删除这些文件的备份)中,将被删除(rmnamed),并且父母的检查结果非常严格为你完成的目录。 -rmname

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


1
投票

我今天有同样的需求,并且对使用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
© www.soinside.com 2019 - 2024. All rights reserved.