我找到了这个片段。
svn status | grep '\!' | awk '{print $2;}' | xargs svn rm
如果我或某人手动删除文件(通过编辑器或通过系统删除),它会删除所有丢失的文件。
但是我的bash编码不是很好,缺少的是它不能用于包含空格的文件。
svn rm Super\ Test.file
删除带空格的文件是否正确,但我不知道如何修改上面的代码段以便它可以正常工作。 (或者,如果你有另一个代码片段)
答案 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