Cambio de metadatos de archivos de CLI que se mostrarán en Finder

Finder tiene columnas por las que puede ordenar los archivos: nombre, tamaño, tipo, fecha, comentario, etc. Estos se muestran como encabezados cuando Finder está en modo "Lista", con las propiedades de archivo respectivas que se muestran a continuación.

  • Si hago Cmd+I en un archivo y cambio Comentarios a FOO, mdlsmuestra FOO y Finder muestra FOO.
  • Si configuro Comentarios en BAR desde Terminal, mdlsmuestra "BAR", ¡pero Finder aún muestra "FOO"!

¿Cómo puedo cambiar el campo "Comentario" de la Terminal para que el cambio se propague al Finder?

$ xattr -w com.apple.metadata:kMDItemFinderComment "BAR" test.txt
$ mdls test.txt
kMDItemFinderComment = "BAR"

Actualización : noté que al usar Finder/AppleScript, el comentario se establece en una lista de propiedades binarias que contiene el valor. Entonces, ¿tal vez sea posible eludir AppleScript y aumentar el rendimiento?

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<string>My comment</string>
</plist>

Intenté editar la lista de propiedades y devolverla a xattr. Sin embargo, xattrmuestra el mensaje de error Odd-length stringincluso si el tamaño del archivo hexes de hecho un número par. ¿Alguien?

xattr -p com.apple.metadata:kMDItemFinderComment a | xxd -r -p | plutil -convert xml1 -o plist -
nano plist
cat plist | plutil -convert binary1 -o - - | xxd -p -c 999 -u > hex
xattr -w -x com.apple.metadata:kMDItemFinderComment hex test.txt

Respuestas (1)

mdlsusa su base de datos para mostrar la información del archivo, no los atributos extendidos que se establecen en ese archivo. Entonces, para que funcione, debe importar el archivo a su base de datos después de cambiar xattrcon:

mdimport /path/to/file

Para ver el comentario de actualización en Finder, puede usar AppleScript. Aquí está el código:

#!/bin/bash                                                                                                                                                                                                     

filepath="$1"
comment="$2"

/usr/bin/osascript -e "set filepath to POSIX file \"$filepath\"" \
-e "set theFile to filepath as alias" \
-e "tell application \"Finder\" to set the comment of theFile to \"$comment\""

Usar como./script.sh path_to_file "Comment"

El usuario puede encontrar una mejor versión de ese script en StackOverflowl'L'l .

Esto funciona, pero es un poco lento. Cambiar los comentarios toma casi tres segundos para una docena de archivos. ¿Se puede acortar u optimizar el AppleScript? ¿Existe una solución más rápida y breve que no implique AppleScript? Dejaré la pregunta abierta para más sugerencias.