Git: how to specify file names containing octal notation on the command line

这一生的挚爱 提交于 2019-11-28 01:04:52

问题


For non-ASCII characters in file names, Git will output them in octal notation. For example:

> git ls-files
"\337.txt"

If such a byte sequence does not represent a legal encoding (for the command line's current encoding), I'm not able to enter the corresponding String on command line. How can I still invoke Git commands on these files? Obviously, using the String which is displayed by git ls-files does not work:

> git rm "\337.txt"
fatal: pathspec '337.txt' did not match any files

Tested on Windows, with msysgit 1.7.10 (git version 1.7.10.msysgit.1)


回答1:


In Bash, you can use printf for this kind of purpose:

$ printf "\337.txt"
▒.txt

$ git rm `printf "\337.txt"`  # this would pass the awkward filename to git

The problem is, obviously, that the shell doesn't perform octal escaping, neither does git. But printf does.


Also, echo -e can do octal escaping:

$ echo -e '\0337.txt'
▒.txt

But that usage is a bit discouraged, you should prefer printf where you can.



来源:https://stackoverflow.com/questions/10687589/git-how-to-specify-file-names-containing-octal-notation-on-the-command-line

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!