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

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

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

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

3 ответа

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

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

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

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

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

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