删除具有嵌入空格的路径中的所有.SVN文件夹

时间:2012-12-13 14:06:43

标签: linux bash svn

this question和其他一百个地方,大多数都是相同的Linux解决方案,用于删除所有.svn目录。它的工作非常精美,直到路径恰好包括空白。那么,是否有一种技术可以递归删除包含空格的目录中的.svn文件?或许可以告诉查找将其答案用引号括起来?

5 个答案:

答案 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文件夹的目录。