Назад | Перейти на главную страницу

как я могу отсечь результат команды «найти»?

я выполняю следующую команду: -find / -type f -name fs-type -exec svnlook tree {} \; | egrep "/ $"

результат svnlook: не удается открыть файл '/ var / lib / svn / repos / b1me / products / payone / generic / code / core / db / fs-type / format': не каталог svnlook: не удается открыть файл '/ var / lib / svn / repos / b1me / products / payone / generic / code / сборы / db / fs-type / format': не каталог

возможно, мы должны сделать так, чтобы команда "find" давала нам путь без "db / fs-type / format" другими словами, мы должны вырезать вывод "команды find" .... но как я могу это сделать ???

Здесь виновата не команда find. Команда find делает именно то, что вы ей говорите, например он находит все вхождения регулярного файла с именем fs-type во всей вашей файловой системе.

Затем вы передаете результаты команды find в svnlook tree.

В svnlook tree Команда ожидает каталог, так как это параметр, а не обычный файл, как вы ей. Каталог, в который вы переходите svnlook tree должен иметь файл с именем format который содержит номер версии репозитория, поэтому вы получаете сообщение об ошибке выше.

Это svnlook команда, которая выдает вам сообщение об ошибке, которое вы видите. Что вам нужно сделать, так это выяснить, какой каталог в пути /var/lib/svn/repos/ правильный переход к svnlook.

Вы также можете помочь себе, прочитав некоторую информацию о svn чтобы лучше понять систему, с которой вы работаете.

РЕДАКТИРОВАТЬ

Нет простого способа найти все репозитории svn

Вы можете найти все каталоги .svn в системе и запустить svn info на них затем проверьте вывод на "Repository Root:". Если у вас есть много проектов в общем репозитории, то выходные данные нужно будет передать через uniq, таким образом

sudo find / -name .svn  -exec dirname {} \; | \
xargs svn info | grep "Repository Root:" | uniq \
sed 's/Repository Root: file:\/\///'

Вы получите что-то вроде /var/svn/repos как выход.

Выше перечислены все репозитории для проектов, разбросанных по вашей файловой системе. Тогда ты можешь

svnlook tree /var/svn/repos |grep / чтобы найти то, что вы хотите для каждого репозитория, указанного в выходных данных приведенной выше команды.

Единственная проблема с описанным выше методом заключается в том, что если дерево каталогов было удалено, и оно содержало проект под управлением svn, а проект находился в уникальном репозитории, вы его не найдете.

Насколько я понимаю, вы хотите пропустить каталог в своих результатах.

Вы можете сделать это с помощью -path <path_to_skip> -prune параметры

Вы можете использовать параметр "-path" с шаблоном, который вам нравится