0 votos

Ver los bytes no modificados de un nombre de archivo en APFS

¿Cómo puedo ver los bytes de un nombre de archivo tal y como se almacena en un volumen APFS (es decir, sin pasar por la normalización Unicode)?

Contexto: He migrado una antigua biblioteca de iTunes a una nueva biblioteca de Music.app, y he ejecutado la operación "Consolidar archivos" en el resultado para ordenar las cosas. A continuación, he utilizado rsync y diff para comparar los dos en el disco y obtuve resultados como

% diff -rq iTunes/iTunes\ Music Music/Media.localized/Music
...
Only in Music/Media.localized/Music: Múm
Only in iTunes/iTunes Music: Múm

Esto me llevó por el camino de aprender sobre Normalización Unicode (explicadores aquí y aquí ). Estas dos cadenas tienen la misma representación visual pero se almacenan de forma diferente en el disco. Esto ocurre con frecuencia con los caracteres acentuados.

La pregunta que surgió fue: ¿Cómo puedo obtener rápidamente la representación en bytes de cada nombre en el disco, de modo que pueda estar seguro de que entiendo lo que está pasando?

Por cierto, para el problema original de comparar directorios, encontré esto práctico Python script (vía esta respuesta ) que considerará los nombres equivalentes a Unicode como coincidentes.

1voto

printemps Puntos 243

Tiene que haber una manera mejor, pero respondiendo a mi propia pregunta como al menos encontré a manera. Sólo tienes que copiar el nombre del archivo desde el Finder y pegarlo en tu herramienta de volcado hexadecimal favorita.

% xxd
Múm
00000000: 4dc3 ba6d 0a                             M..m.
% xxd
Múm
00000000: 4d75 cc81 6d0a                           Mu..m.

Sin embargo, ten cuidado: si accidentalmente te metes en el cuadro de renombramiento de Finder, éste sobrescribirá la representación en bytes del disco con una forma normalizada, dejándote muy confundido.

He perdido mucho tiempo pensando que ls imprimiría los nombres de los archivos tal y como están en el disco, y podría canalizarlo a xxd o od pero, por lo que sé, se normaliza antes de la impresión.

% ls -d Music/Media.localized/Music/M?m | tail -c 5 | xxd
00000000: 4dc3 ba6d 0a                             M..m.
% ls -d iTunes/iTunes\ Music/M?m | tail -c 5 | xxd
00000000: 4dc3 ba6d 0a                             M..m.

Para una opción puramente-CLI, seguramente hay algo más directo, pero encontré este Perl script haría el trabajo.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X