2010-05-28 124 views
5

我偶然在目录中创建了文件“ - ”(只是一个减号)并提交了它。 我必须删除它,因为在其他机器上其造成的错误: 的svn:无法从 'UTF-8' 到本地编码字符串转换: 的svn:???\ 226 \ 128 \ 147如何从svn中删除“ - ”文件?

我可以使用“rm -i *”或python“os.remove('\ xe2 \ x80 \ x93')”从本地目录中删除它,但这些方法不能与“svn rm”一起使用。

如何从svn仓库中删除这样的文件?

+0

您尝试过'svn rm - - '还是'LC_ALL = C svn rm - - '? – Rudi 2010-05-28 12:34:38

+0

所以它没有减,虽然它看起来几乎完全一样。我从“ls”复制粘贴它并用“svn rm - - ”删除它。感谢您提供快速解答。 – askonecki 2010-05-28 12:43:59

回答

5

你可以尝试svn rm ./-

它可能不是实际上是负,寿”,而是一个寻找类似文字。

+0

我记得在大学的我的linux课程中想出了这个答案。 – Malfist 2010-05-28 13:27:12

8

通常,您需要使用--标记来终止命令行选项列表。

尝试类似svn rm -- -

如果要从文件系统中删除目录,则相同:rm -r -- -

2

尝试svn rm -- -

--的意思是 “停止阅读选项”。

1

在某些情况下(例如在控制台),您可能无法复制/粘贴奇数字符。在这种情况下,你可以使用文件通配符。在rm之前执行ls是一个好主意,以确保您不想在删除中包含要保留的内容。

任何单个字符的文件名:

ls -l ? 
rm ? 

,或者任何单个字符的文件名,这不是一个字母数字字符或连字符:将

ls -l [^a-zA-Z0-9-] 
rm [^a-zA-Z0-9-] 

的另一个版本(区域识别)成为:

ls -l [^[:alnum:]-] 
rm [^[:alnum:]-] 

您可以结合其他字符和类的列表另外以更加通用和特定的角色。

删除与不与“M”,“S”或“y”启动一个三字符名称的任何文件,具有任何第二字符,并用“1”或“9”结束:

rm [^msy]?[19]