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