查看十六进制文件名?

查看十六进制文件名?

我有一些带有特殊字符的文件,例如重音字母。

它们是有效的名称,但由于某种原因,当它们通过网络复制到驱动器时​​(可能以另一种格式),名称看起来仍然相同,但并不相同。

我可以将文件复制回来,现在我有两个文件,它们在完全相同的路径中具有完全相同的名称。

我的猜测是有两个不同的值代表重音字母,因此它们看起来是相同的。有没有办法查看名称本身的十六进制,而不是文件?

这很重要,因为我的一个同步应用程序变得混乱并创建重复项。

答案1

将文件名通过管道传输到od或类似的工具:

printf '%s\n' * | od -t x1 -a
$ ls
Accentué  bar  foo
$ printf '%s\n' * | od -t x1 -a
0000000  41  63  63  65  6e  74  75  c3  a9  0a  62  61  72  0a  66  6f
          A   c   c   e   n   t   u   C   )  nl   b   a   r  nl   f   o
0000020  6f  0a
          o  nl
0000022

即使采用相同的编码,许多字符也可以有不同的表示形式;例如,在UTF-8中,0xC3 0xA9代表é,0x65 0xCC 0x81代表e后面加上“组合锐音符号”,也显示为é。这样的字符串需要归一化如果要比较它们,但即使标准化也有不同的变体,并且不同的操作系统可以以不同的方式存储相同的字符串。

相关内容