У меня довольно сложное дерево каталогов. Есть много подкаталогов, в этих подкаталогах рядом с другими файлами и каталогами находятся каталоги ".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
вариант.