Как исключить файлы по имени в команде поиска ClearCase?
-
03-07-2019 - |
Вопрос
Используя команду ClearCase find, как мне найти все файлы в каталоге, у которых нет имени pom.xml?
Я хотел бы передать другие параметры выбора команде ClearCase find, поэтому я бы предпочел не выполнять другую команду.
Я использую RedHat linux-версию ClearCase.Я попробовал "cleartool find !-имя pom.xml -напечатать" и это не сработает.
PS:Я не использую ClearCase по своему выбору, это предусмотрено в моем проекте.Это одна из причин, по которой я это ненавижу.Я несколько раз перечитывал справочные страницы и не вижу четкого способа сделать это, который бы работал!
Решение
Ты, кажется, забываешь о -исполнительный директор опция команды поиска cleartool.
На самом деле это позволяет вам выполнять другие команды, отличные от команд cleartool, включая системные (например, скрипт sh или DOS).
Я знаю, что вы "предпочли бы не выполнять другую команду", но если этот другой системный скрипт является частью опции exec команды find...можно утверждать, что это все еще так один команда ;)
Итак, создайте простой скрипт, подобный:
(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 (со всеми другие варианты относительно фильтрации по датам, фильтрации ветвей и так далее)
(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".
Примечание:опция '-type f' команды find позволяет ограничить поиск только именами файлов (не названиями каталогов).
Другие советы
Подстановочные знаки ClearCase не имеют инверсии (AFAIR), но вы можете использовать для этого grep -
cleartool ls -short -nxname | grep -v pom.xml
Есть другое решение, которое может работать на вас. Попробуйте