Как удалить элементы файла по расширению файла в ClearCase?
У меня есть тонны xxx.cmd
файлы, которые находятся в нескольких папках (например, child1
, child2
, child3
и т. д.), у них есть родительская папка parent
Есть ли команда cleartool, которую я могу выполнить на parent
папка, которая удаляет все .cmd
файлы во всех дочерних папках?
1 ответ
У меня была такая же потребность сегодня, и я не был очень доволен предложением использовать clearfsimport
из-за необходимости сделать локальную копию. Вот что я сделал в среде bash (msys под windows для меня):
- Перечислите все файлы для удаления, используя
find
:find parent -name "*.cmd" | tee to_remove_list.txt
- Извлечь список папок:
sort to_remove_list.txt | xargs -i dirname {} | uniq | tee to_checkout.txt
- Проверьте все эти папки:
cat to_checkout.txt | xargs -i cleartool co -nc {}
- Удалить файлы:
cat to_remove_list.txt | xargs -i cleartool rm {}
- Регистрация всех папок:
cat to_checkout.txt | xargs -i cleartool ci -nc {}
- (Необязательно) очистите папки и списки файлов:
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.