我有相当复杂的目录树。 有许多子目录,在其他文件和目录旁边的那些子目录是“.svn”目录。
现在,在Linux下,我想删除除 .svn目录之外的所有文件和目录。
我发现了许多关于相反行为的解决scheme – 删除树中的所有.svn目录。 有人可以引用我正确的答案删除除.svn之外的一切吗?
我通常使用-exec选项使用相对简单的find ,因为我经常忘记-delete命令。 我也只限于文件。 主要是因为我使用find {someswitches} -exec {somecommand}的一些变化 – 所以我记得它!
find . -type f -not path '*.svn*' -exec rm {} \;
试试这个rm -rf -- $(ls -la |grep -v .svn) 。 它将删除除.svn目录之外的所有内容(包括隐藏文件)。
编辑 :上面的解决scheme适用于一个目录,而不是一棵树, find . ! -name .svn -exec rm {} \; find . ! -name .svn -exec rm {} \; 将删除所有的文件,而不是dirs。 这是一个安全的方法,因为如果你在目录上强制使用rm ,你可以删除里面有.svn目录的目录。
未经testing: find . -not -path '*.svn*' find . -not -path '*.svn*' …如果这些都是你想要破坏的文件,请使用-delete选项再次运行它。