Linux & SVN: Как удалить все версионные файлы, кроме структуры директории KEEP, игнорировать файлы.svn?

Я хочу удалить все версионные файлы из моего репозитория, но СОХРАНИТЕ версионную структуру каталогов. Очевидно, я хочу оставить все каталоги.svn нетронутыми.

Другими словами, я хочу полностью очистить структуру каталогов рабочей копии, не нанося вреда самой структуре каталогов.

Например, удаление файлов из этой структуры:

dir/
    .svn/
        [files]
    svsubdir1/
        file1
        .svn/
            [files]
    subdir2/
        file2
        file3
        file4
        .svn/
            [files]
        subsubdir1/
            file5
            .svn/
                [files]

Должно привести к:

dir/
    .svn/
        [files]
    svsubdir1/
        .svn/
            [files]
    subdir2/
        .svn/
            [files]
        subsubdir1/
            .svn/
                [files]

Я ищу какой-то find команда или что-то для этого, и у меня возникли проблемы при создании команды. Спасибо за помощь!

2 ответа

Решение
find dir/ -path '*/.svn' -prune -o -type f -print

должен отвечать всем требованиям (в основном это происходит на странице поиска для -path). Трубите это меньше и проверьте это. Сначала он выполняет поиск (путь заканчивается на.svn и не возвращается в этот каталог), либо (если это файл, распечатайте его).

Если это выглядит хорошо, измените его на

find dir/ -path '*/.svn' -prune -o -type f -exec rm {} +

+ Версия объединяет все файлы в одну команду rm. Если вы параноик, сохраните резервную копию дерева (cp -a dir/ otherdir/) первый.

находить. -не-путь "*/.svn/*" -и -тип f -and -exec /bin/rm '{}' \;

Должен сделать трюк.

Другие вопросы по тегам