Я хочу удалить все версированные файлы из моего репозитория, но СОХРАНИТЬ структуру каталогов с версией. Очевидно, я хочу оставить все каталоги .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 '{}' \;
Надо сделать трюк.