在this question和其他一百个地方,大多数都是相同的Linux解决方案,用于删除所有.svn目录。它的工作非常精美,直到路径恰好包括空白。那么,是否有一种技术可以递归删除包含空格的目录中的.svn文件?或许可以告诉查找将其答案用引号括起来?
答案 0 :(得分:4)
您可以告诉find
使用null作为输出分隔符,而不是使用-print0
操作的换行符。
然后你可以告诉xargs
使用null作为-0
参数的输入分隔符。
示例:
find . -name '*.svn' -print0 | xargs -0 -I{} rm \'{}\'
xargs的-I{}
参数告诉它用标准输入中的当前行替换{}
。个人而言,我喜欢在文件名周围加入反斜杠转义引号,只是为了加倍确定。
答案 1 :(得分:1)
find . -name '*.svn' | while read x; do rm -r "$x" ; done
答案 2 :(得分: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 .
答案 3 :(得分:0)
find . -type d -name '.svn' -delete
当前版本的GNU find已获得“-delete”操作。
答案 4 :(得分:0)
如果您需要的是存储库的干净副本,您是否设想使用SVN export
command?
然后,您将获得存储库中存在的所有目录的副本,包括名称中包含空格但没有任何.svn
文件夹的目录。