16진수 파일 이름을 보시겠습니까?

16진수 파일 이름을 보시겠습니까?

악센트 문자와 같은 특수 문자가 포함된 파일이 있습니다.

유효한 이름이지만 어떤 이유로 네트워크를 통해 드라이브에 복사되면(아마도 다른 형식으로) 이름은 여전히 ​​동일해 보이지만 동일하지는 않습니다.

파일을 다시 복사할 수 있으며 이제 정확히 동일한 경로에 정확히 동일한 이름을 가진 두 개의 파일이 있습니다.

내 생각에는 악센트 문자를 나타내는 두 가지 다른 값이 있으므로 동일하게 나타나는 것 같습니다. 파일이 아닌 이름 자체의 16진수를 볼 수 있는 방법이 있습니까?

내 동기화 응용 프로그램 중 하나가 복잡해지고 중복 항목이 생성되었기 때문에 이는 중요합니다.

답변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 다음에 "결합 급성"을 나타내며 é로도 표시됩니다. 이러한 문자열에는 다음이 필요합니다.정규화됨비교하고 싶지만 정규화에도 변형이 다르며 운영 체제마다 동일한 문자열을 다른 방식으로 저장할 수 있습니다.

관련 정보