Что такое команда clearcase, чтобы найти все личные файлы представления в текущем каталоге рекурсивно?
Команда для поиска всех открытых файлов в текущем каталоге рекурсивно
Ответ 1
Обычные команды основаны на cleartool ls
:
-
ct lsprivate
: но это только для динамических представлений, а не для снимков снимков -
ct ls -rec -view_only
: по крайней мере, он работает как в моментальном снимке, так и в динамических представлениях
Однако оба списка также содержат извлеченные файлы.
Если вам нужны только личные файлы, т.е. пропущенные захваченные/затменные/извлеченные и символические ссылки, вам необходимо отфильтровать их.
В Windows это будет:
for /F "usebackq delims=" %i in (`cleartool ls -rec ^| find /V "Rule:" ^| find /V "hijacked" ^| find /V "eclipsed" ^| find /V "-->"`) do @echo "%i"
В Unix:
cleartool ls -rec | grep -v "Rule:" | grep -v "hijacked" | grep -v "eclipsed" | grep -v "-->" | xargs echo
Ответ 2
В случае, если кто-то еще прочитает этот вопрос, это решение VonC windows с несколькими незначительными изменениями для запуска в виде окон script:
@echo off
setlocal
for /F "usebackq delims=" %%A in (`cleartool ls -rec ^| find /V "Rule:" ^| find /V "hijacked" ^| find /V "eclipsed" ^| find /V "-->"`) do @echo "%%A"
Замените @echo
на rmdir /S /Q
и del /F
, чтобы выполнить фактические удаления, как описано здесь. Таким образом, окончательный script:
@echo off
setlocal
for /F "usebackq delims=" %%A in (`cleartool ls -rec ^| find /V "Rule:" ^| find /V "hijacked" ^| find /V "eclipsed" ^| find /V "-->"`) do rmdir /S /Q "%%A"
for /F "usebackq delims=" %%A in (`cleartool ls -rec ^| find /V "Rule:" ^| find /V "hijacked" ^| find /V "eclipsed" ^| find /V "-->"`) do del /F "%%A"
Если вы сохраните файл .bat под элементом просмотра, который вы очищаете, script очистит, также удалив: -)
Ответ 3
Я изменил версию @MilesHampson, так как это вернуло мне слишком много результатов, и я хочу запустить это как пакетный файл.
Мои новые файлы не будут находиться в папке debug
или obj
, и поэтому мне не нужно видеть никаких результатов для этих папок... Я также работаю только на С#. Так что все, что мне нужно увидеть.
@echo off
setlocal
@echo Searching, please wait as this can take a while...
for /F "usebackq delims=" %%A in (`cleartool ls -rec ^| find /V "Rule:" ^| find /V "hijacked" ^| find /V "eclipsed" ^| find /V "-->" ^| find /V "obj" ^| find /V "debug"`) do (
if "%%~xA"==".cs" echo %%A
)
)
@echo === === === === === Search Complete === === === === === ===
pause
Создайте файл bat с указанным выше, поместите его в корневую папку проекта и запустите его. Он отобразит те, которые не находятся в контроле источника.
Ответ 4
В случае, если кто-нибудь еще прочтет этот вопрос, это решение VonC Unix с несколькими незначительными изменениями для запуска под Cygwin в Windows.
В Cygwin:
cleartool ls -rec | grep -v "Rule:" | grep -v "hijacked" | grep -v "eclipsed" | grep -v -- "-->"
Линия Cygwin похожа на Unix, заданную VonC, но обратите внимание, что требуется двойная тире в последнем grep (и xargs не требуется).
Ответ 5
ct lsprivate -other
Отфильтровать также извлеченные файлы
ct lsprivate -co
: список всех извлеченных файлов
ct lsprivate -do
: список всех файлов производных объектов
ct lsprivate -other
: список всех других личных файлов
Ответ 6
Я следил за всеми вышеперечисленными решениями, и это отличная команда. У меня было еще несколько требований, которые не были рассмотрены выше, поэтому я немного изменил script с дополнительными точками
- Исключенный командный файл из списка (в противном случае текущий пакетный файл также входит в список)
-
Удален каталог из списка, как обычно меня интересует файл
-
Специально для Java-разработчика исключены целевые папки и файлы jar поскольку они обычно не проверяются в
-
Удалено .classpath,.project и .settings, которая специфична для Eclipse (если они одинаковы уровень как проект/модули)
@echo off setlocal @echo. @echo Searching, please wait as this can take a while... @echo. for /F "usebackq delims=" %%i in (`cleartool ls -rec ^| find /V "Rule:" ^| find /V "hijacked" ^| find /V "eclipsed" ^| find /V "-->" ^| find /V ".settings" ^| find /V "jar" ^| find /V "keep" ^| find /V "target" ^| find /V ".classpath" ^| find /V ".project" ^| find /V "%~n0" `) do ( if not exist %%i\* @echo "%%i") @echo. @echo === === === === === Search Complete === === === === === === @echo. @echo. pause