文件名中的特殊字符 (\#033OA)

文件名中的特殊字符 (\#033OA)

我在 rsync 期间遇到了一个非常顽固的错误的小问题。这是由文件名中含有特殊字符的文件引起的。还有其他的,但我可以通过对文件名的编码进行一些转换来解决这个问题。然而这个文件我什至找不到。

rsync 是这样说的:

../.\#033OA.tex.pyD0MB" failed: No such file or directory (2)

人们注意到的第一件事是字符代码不能是十六进制或八进制所以我用谷歌搜索它并且只找到。所以它可能是一个CURSOR UP角色(也可能不是)。我试过了

ls -la *`printf '\033OA'`*

无济于事。我还尝试通过管道传输该目录的 ls 输出,但od无济于事。

我还可以做些什么?或者我到底在寻找什么角色?

谢谢

答案1

您可以使用-b选项ls,它将非图形字符显示为 C 样式转义序列。

答案2

ls -aq将打印所有文件名,并用?代替每个不可打印的字符。在许多 Unix 变体上,ls -ABor ls -Ab(检查你的手册页)将打印八进制转义符。通过ls -aq,您可以将显示的输出用作 shell 模式。

$ ls -Aq
.?OA.tex.pyD0MB
… more stuff …
$ mv -i .?OA.tex.pyD0MB weird-file
$ less weird-file

以某种方式获取文件名的另一种方法是使用 shell 的完成功能:重复输入mv .并按,Tab直到插入奇怪的名称。

相关内容