16進ファイル名を表示しますか?

16進ファイル名を表示しますか?

アクセント文字などの特殊文字を含むファイルがあります。

有効な名前ですが、何らかの理由でネットワーク経由でドライブにコピーした場合(おそらく別の形式で)、名前はまだ同じように見えますが、同じではありません。

ファイルをコピーし直すことができ、まったく同じパスにまったく同じ名前の2つのファイルがあります。

私の考えでは、アクセント文字を表す2つの異なる値があるので、同じように見えるようです。ファイルではなく名前自体の16進数を表示する方法はありますか?

私の同期アプリケーションの1つが複雑になり、重複エントリが作成されたため、これは重要です。

ベストアンサー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 の後に「結合急性」を表し、é とも表されます。これらの文字列には次のものが必要です。正規化比較したいのですが、正規化にもバリエーションが異なり、オペレーティングシステムごとに同じ文字列を異なる方法で保存できます。

おすすめ記事