Как удалить все, кроме.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
каталоги внутри.