如何删除除 .svn 目录之外的所有内容?

如何删除除 .svn 目录之外的所有内容?

我的目录树相当复杂。有许多子目录,这些子目录中除了其他文件和目录外还有“.svn”目录。

现在,在Linux下我想删除所有文件和目录除了.svn 目录。

我发现了许多关于相反行为的解决方案 - 删除树中的所有 .svn 目录。有人能告诉我删除除 .svn 之外的所有内容的正确答案吗?

答案1

我通常使用相对简单的find选项-exec,因为我总是忘记 -delete 命令。我还限制为仅限文件。主要是因为我使用了很多变体find {someswitches} -exec {somecommand}- 所以我记得它!

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

答案2

未经测试: find . -not -path '*.svn*'...如果这些都是您想要破坏的文件,请使用该-delete选项再次运行它。

答案3

试试这个rm -rf -- $(ls -la |grep -v .svn)。它将删除.svn目录之外的所有内容(包括隐藏文件)。

编辑:上述解决方案适用于一个目录,而不是树,find . ! -name .svn -exec rm {} \;将删除所有文件而不是目录。这是一种安全的方法,因为如果您强制rm打开目录,则可以删除.svn其中包含目录的目录。

相关内容