Find

如何刪除除 .svn 目錄之外的所有內容?

  • April 7, 2011

我有相當複雜的目錄樹。有許多子目錄,在這些子目錄中,其他文件和目錄旁邊是“.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目錄。

引用自:https://serverfault.com/questions/166396