查看十六进制文件名?

DAB*_*DAB 5 debian character-encoding ext4 filenames

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

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

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

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

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

Ste*_*itt 10

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

\n
printf \'%s\\n\' * | od -t x1 -a\n
Run Code Online (Sandbox Code Playgroud)\n
$ ls\nAccentu\xc3\xa9  bar  foo\n$ printf \'%s\\n\' * | od -t x1 -a\n0000000  41  63  63  65  6e  74  75  c3  a9  0a  62  61  72  0a  66  6f\n          A   c   c   e   n   t   u   C   )  nl   b   a   r  nl   f   o\n0000020  6f  0a\n          o  nl\n0000022\n
Run Code Online (Sandbox Code Playgroud)\n

即使采用相同的编码,许多字符也可以有不同的表示形式;例如,在UTF-8中,0xC3 0xA9代表\xc3\xa9,0x65 0xCC 0x81代表e后面跟\xe2\x80\x9c组合锐音符号\xe2\x80\x9d,也显示为\xc3\xa9。此类字符串需要标准化,但即使规范化也有不同的变体,并且不同的操作系统可以以不同的方式存储相同的字符串。

\n

  • 可能想提及 Unicode 规范化形式,可能是 OP 正在经历的事情。 (2认同)