Как удалить элементы файла по расширению файла в ClearCase?

У меня есть тонны xxx.cmd файлы, которые находятся в нескольких папках (например, child1, child2, child3и т. д.), у них есть родительская папка parent

Есть ли команда cleartool, которую я могу выполнить на parentпапка, которая удаляет все .cmd файлы во всех дочерних папках?

1 ответ

У меня была такая же потребность сегодня, и я не был очень доволен предложением использовать clearfsimport из-за необходимости сделать локальную копию. Вот что я сделал в среде bash (msys под windows для меня):

  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

Не легко, потому что вам нужно проверить любой родительский каталог, включая эти файлы, прежде чем делать cleartool rmname,

Проще всего было бы:

  • Скопируйте все ваши элементы за пределами представления.
  • удалите все файлы *.cmd (используя любую нужную утилиту поиска, ничего общего с clearcase)
  • clearfsimportверните эти файлы в ваше представление (за исключением удаленных файлов *.cmd) с параметром-rmname ("mirror clearfsimport"):

    • ни один изсуществующих файлов не будет затронут
    • файлы *.cmd, присутствующие в местеназначения(ваше представление ClearCase), но больше не присутствующие в источнике (ваша резервная копия, в которой вы очистили и удалили эти файлы), будут удалены (по имени) с тщательной проверкой-проверкой родительского элемента каталоги сделаны для вас.

    -rmname

Для всех аргументов имени источника, которые являются каталогами, выполняетrmname работа с элементами, которыеуже находятся в VOB, но отсутствуют в исходном каталоге.
Если используется в сочетании с -recurse, выполняет это rmname Операция во всех каталогах пройдена.
Если используется в сочетании с -downcaseвыполняет downcase операция, прежде чем искать подходящие имена в VOB.

Другие вопросы по тегам