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

Как удалить все, кроме каталогов .svn?

У меня довольно сложное дерево каталогов. Есть много подкаталогов, в этих подкаталогах рядом с другими файлами и каталогами находятся каталоги ".svn".

Теперь под linux я хочу удалить все файлы и каталоги Кроме каталоги .svn.

Я нашел много решений по поводу противоположного поведения - удаления всех каталогов .svn в дереве. Может кто-нибудь процитировать мне правильный ответ для удаления всего, кроме .svn?

Я обычно использую относительно простой find с -exec вариант, так как я всегда забываю о команде -delete. Я также ограничиваюсь только файлами. В основном потому, что я использую некоторые варианты find {someswitches} -exec {somecommand} много - вот и помню!

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

Попробуй это rm -rf -- $(ls -la |grep -v .svn). Он удалит все (включая скрытые файлы), кроме .svn реж.

РЕДАКТИРОВАТЬ: Вышеупомянутое решение работает для одного каталога, а не для дерева, find . ! -name .svn -exec rm {} \; удалит все ФАЙЛЫ, а не каталоги. Это безопасный способ сделать это, так как если вы rm в каталогах вы можете удалить каталоги, в которых .svn каталоги внутри.

Не проверено: find . -not -path '*.svn*'... если это все файлы, которые вы хотите удалить, запустите его снова с -delete вариант.