5

У меня есть следующая структура:

/.svn
/bla/.svn
/hello/.svn
/bla/bla/bla/.svn
... etc

Я хочу удалить все папки .svn. Как мне это сделать?

Это не:

rm -rf .svn

В Windows вы используете триггер /s. Как ты делаешь это Linux?

4 ответа4

11

Используйте команду find:

find . -type d -name .svn -exec rm -rf {} \;

{} - это имя файла, -type d означает каталоги.

Предупреждение: используйте find и rm вместе с осторожностью!

9
find . -depth -type d -name .svn -exec rm -rf {} \;

Отличия от других уже представленных решений:

  • без -depth команда попытается вернуться в каталог .svn после удаления, что приведет к сообщениям об ошибках.

  • без -type d (который ограничивает поиск по каталогам), вы также удалили бы файлы с указанным именем. (Скорее всего, у вас их не будет, но вы не должны рисковать, когда делаете комбинацию "find" и "rm".)

5

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

$ svn export . /tmp/new-dir

Это создаст копию рабочей области svn в текущем каталоге в новый каталог в /tmp/new-dir . Вам не нужно сначала создавать новый каталог. Subversion позаботится об этом за вас.

2
find . -name .svn -exec rm -rf {}\;

Должно работать на вас.
Сначала он находит все папки с именем .svn затем выполняет rm -rf для каждой найденной папки.

Результат:
Нет больше .svn папок

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .