【问题标题】:How to delete "-" file from svn?如何从svn中删除“-”文件?
【发布时间】:2010-05-28 12:29:50
【问题描述】:

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

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

如何从 svn 存储库中删除此类文件?

【问题讨论】:

  • 你试过'svn rm -- -' 还是'LC_ALL=C svn rm -- -'?
  • 虽然看起来几乎一模一样,但它并不是负数。我从“ls”复制粘贴它并用“svn rm -- -”将其删除。感谢您的快速解答。

标签: svn shell


【解决方案1】:

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

试试svn rm -- -

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

【讨论】:

    【解决方案2】:

    你可以试试svn rm ./-

    它实际上可能不是一个减号,而是一个看起来相似的字符。

    【讨论】:

    • 我记得我在大学的 linux 课上不得不想出这个答案。
    【解决方案3】:

    试试svn rm -- -

    -- 表示“停止阅读选项”。

    【讨论】:

      【解决方案4】:

      在某些情况下(例如在控制台),您可能无法复制/粘贴奇数字符。在这种情况下,您可以使用文件通配符。在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]
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-01-06
        • 1970-01-01
        • 1970-01-01
        • 2017-06-27
        • 1970-01-01
        • 2013-04-01
        • 1970-01-01
        • 2012-06-19
        相关资源
        最近更新 更多