2012-01-11 210 views
0

我必须编写一个脚本,只删除svn签出的文件。这就像撤消svn结账。删除svn文件和目录

+1

你想达到什么目的?你想删除所有.svn文件夹吗? – 2012-01-11 07:27:30

+0

将来如果你能提供一个更好的解释你的意图会更好。 – Kev 2012-01-11 14:32:58

+0

@Kev有时与客户一起工作,很难用几句话解释意图......它更像是我想做一个干净的未安装的东西......就像删除我创建的数据库并清理任何代码我已经下载了... – 2012-01-11 18:23:01

回答

0

找到了一个更好的方法来做到这一点。

0
find . -name "FILE-TO-FIND" -exec rm -rf {} \; 
+0

'-exec'前面没有空格,但是使用'rm -r'无论如何都失败了使用'find'的好处。 – tripleee 2012-01-11 07:55:52

1

每个文件foobar在SVN 工作拷贝签出保存的文件.svn/text-base/foobar.svn-base在其自身的副本。获取这个文件列表,你可以得到列表检出文件。

ls .svn/text-base/ | sed 's/\.svn-base$//' | xargs rm 

现在,让它递归,您可以使用查找和复杂一点sed

find -wholename '*/.svn/text-base/*.svn-base' | sed 's/\/\.svn\/text-base\/\(.*\)\.svn-base$/\/\1/' | xargs rm 

但最后,我真的不知道你想达到什么目的? OP有没有真正理解的含义在SVN中检出的含义?

+0

或者你可以使用XML选项解析'svn status -v'的输出。 – tripleee 2012-01-11 07:57:29

+0

非常感谢你们两位...使用svn status -v |剪下-d''-f28 | sed's/^ \ ./ \。svn /'|剪下-d/-f1 | uniq | xargs rm -rf ....虽然我对切割第28列并不满意......但有一种更好的方法......但它现在起作用...... – 2012-01-11 08:46:24