악센트 문자와 같은 특수 문자가 포함된 파일이 있습니다.
유효한 이름이지만 어떤 이유로 네트워크를 통해 드라이브에 복사되면(아마도 다른 형식으로) 이름은 여전히 동일해 보이지만 동일하지는 않습니다.
파일을 다시 복사할 수 있으며 이제 정확히 동일한 경로에 정확히 동일한 이름을 가진 두 개의 파일이 있습니다.
내 생각에는 악센트 문자를 나타내는 두 가지 다른 값이 있으므로 동일하게 나타나는 것 같습니다. 파일이 아닌 이름 자체의 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 다음에 "결합 급성"을 나타내며 é로도 표시됩니다. 이러한 문자열에는 다음이 필요합니다.정규화됨비교하고 싶지만 정규화에도 변형이 다르며 운영 체제마다 동일한 문자열을 다른 방식으로 저장할 수 있습니다.