2

这个问题和其他一百个地方,删除所有 .svn 目录的 Linux 解决方案大多相同。它工作得很好,直到路径碰巧包含空白。那么,是否有一种技术可以递归删除包含空格的目录中的 .svn 文件?也许是一种告诉find将其答案用引号括起来的方法?

4

5 回答 5

4

您可以告诉find在操作中使用 null 作为输出分隔符而不是换行符-print0

然后你可以告诉xargs使用 null 作为-0参数的输入分隔符。

例子:

find . -name '*.svn' -print0 | xargs -0 -I{} rm \'{}\'

xargs的-I{}参数告诉它{}用标准输入中的当前行替换。就个人而言,我也喜欢在文件名周围包含反斜杠转义引号,以确保双重确定。

于 2012-12-13T14:41:45.083 回答
1
find . -name '*.svn' | while read x; do rm -r "$x" ; done
于 2012-12-13T15:09:39.920 回答
0

是的,用引号括起来似乎可以解决问题。

mkdir "x y"
mkdir x\ y/.svn
find . -name '.svn' | awk '{print "rm -rf \""$0"\""}' | bash

最后:

ls x\ y
total 8
drwxrwxr-x 6 dylan dylan 4096 Dec 13 06:09 ..
drwxrwxr-x 2 dylan dylan 4096 Dec 13 06:11 .
于 2012-12-13T14:13:26.697 回答
0
find . -type d -name '.svn' -delete

当前版本的GNU find已获得“-delete”操作。

于 2012-12-13T14:52:14.283 回答
0

如果您需要的是存储库的干净副本,您是否设想过使用SVNexport命令

然后,您将获得存储库中所有目录的副本,包括名称中带有空格但没有任何.svn文件夹的目录。

于 2012-12-13T16:06:42.040 回答