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

Linux и SVN: как удалить все файлы с версией, но СОХРАНИТЬ структуру каталогов, игнорировать каталоги .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 command или что-то в этом роде, и у меня проблемы с построением команды. Спасибо за помощь!

find dir/ -path '*/.svn' -prune -o -type f -print

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

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

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

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

find . -not -path "*/.svn/*" -and -type f -and -exec /bin/rm '{}' \;

Надо сделать трюк.