如何在svn中删除带空格的丢失文件?

时间:2009-05-12 13:32:13

标签: bash svn

我找到了这个片段。

svn status | grep '\!' | awk '{print $2;}' | xargs svn rm 

如果我或某人手动删除文件(通过编辑器或通过系统删除),它会删除所有丢失的文件。

但是我的bash编码不是很好,缺少的是它不能用于包含空格的文件。

svn rm Super\ Test.file

删除带空格的文件是否正确,但我不知道如何修改上面的代码段以便它可以正常工作。 (或者,如果你有另一个代码片段)

3 个答案:

答案 0 :(得分:18)

svn status | grep '^\!' | cut -c8- | while read f; do svn rm "$f"; done

答案 1 :(得分:4)

你可以0转义并使用-0标志来表示xargs。

svn st | awk '/^!/ { sub("^! +", ""); printf "%s\0", $0 }' | xargs -0 svn rm

这样做的另一个好处是,带引号或其他特殊字符的文件也不会搞砸xargs命令行。

答案 2 :(得分:0)

使用GNU awk,我可以这样做:

svn stat | awk -v FIELDWIDTHS="1 6 1000 1" -v ORS=$'\0' '$1 == "!" { print $3 }' | xargs -0 svn rm