El Finder en Mac OS X 10.7 Lion muestra una nueva pieza de metadatos de archivo, "Fecha de adición", que rastrea la fecha en que se agregó un elemento a una carpeta. Después de actualizar a 10.7, ninguno de los elementos de mi ~/Downloads
carpeta tiene valores de "Fecha de adición". Me gustaría establecer todos los valores vacíos de "Fecha de adición" para que coincidan con los valores de "Fecha de modificación", pero no puedo entender cómo establecer el atributo "Fecha de adición" en un valor específico.
Mi primera suposición fue esta:
xattr -w com.apple.metadata:kMDItemDateAdded "2012-02-19 16:34:47 +0000" myfile
Pero eso no parece funcionar (aunque tampoco informa un error).
Respuestas:
OK, nuevo enfoque aquí. Precaución: no tengo un sistema actualizado a Lion (mi computadora venía con Lion instalado), así que no puedo probar esto. Código no probado; copia de seguridad antes de probar este código!
Mi respuesta anterior se basó en el orden de clasificación utilizado por la pila de Descargas en el Dock. El campo Fecha agregada en el Finder parece estar basado en información de Spotlight, que es difícil de hackear. Tampoco es accesible a través de AppleScript. Pero, parece haber una solución alternativa.
Cree un nuevo flujo de trabajo en Automator.
Configure el flujo de trabajo para aceptar archivos o carpetas del Finder agregando la acción "Solicitar elementos del Finder".
Haga que el flujo de trabajo ejecute un AppleScript agregando la acción "Ejecutar AppleScript".
Use este AppleScript:
Seleccione los archivos que aún no tienen una Fecha de agregado (ordene por Fecha de agregado en el Finder, luego seleccione la parte de la lista sin Fecha de agregado) y ejecute este servicio.
fuente
/.Spotlight-V100
, esto podría ser tan bueno como sea posible. Pero me encantaría ver una respuesta limpia.$
su nombre, pero lo solucioné cambiando el nombre temporalmente de ese archivo. Para hacer el AppleScript manejar este tipo de archivos, mis búsquedas indican que podría reemplazarmyfile
conquoted form of myfile
, pero no he probado eso. Si se intenta eso, podría ser más claro hacer la cita al configurarmyfile
y cambiar el nombre de la variablequotedFilePath
.Cuando ejecuto
xattr -l
elementos en mi carpeta de Descargas, aparece un campo que se ve así:Este es un plist binario. Cuando uso HexFiend para crear un archivo con esos bytes (sí, los ingresé manualmente; explosión del pasado como ingresar el código del ensamblador de una revista en mi Apple] [GS), luego guardarlo como un archivo .plist, abrí el archivo en TextWrangler y obtuvo el siguiente xml sin compilar:
Dicho esto, aunque Apple parece almacenar las fechas en XML compilado, el texto sin formato parece funcionar.
En otras palabras, si puede obtener la fecha de modificación del archivo en forma de cadena, puede ejecutar el comando
xattr -w com.apple.metadata:kMDItemDownloadedDate "2012-02-19 16:34:47 +0000" file
para cambiar la "fecha de descarga", que parece ser el campo realmente ordenado, no la Fecha de adición real.Finalmente, no obtuvo ningún error al agregar el
kMDItemDateAdded
campo (sin usar) porque, como aprendí en este artículo ,xattr
establecerá felizmente cualquier campo de metadatos que desee, usado o sin usar.Ese es el núcleo de la respuesta. Trabajaré en escribir un AppleScript para obtener la fecha de modificación para cada archivo, verificar si
kMDItemDownloadedDate
está configurado y, si no lo está, establecer kMDItemDownloadedDate en la fecha de modificación, pero quería que se publicara el núcleo de la respuesta.fuente
xattr -p com.apple.metadata:kMDItemDownloadedDate FILENAME_HERE | xxd -r -p | plutil -convert xml1 - -o -
. El xxd convierte a datos de pliegue binario, luego losplutil
convierte a plist XML y los imprime.xattr -l
, y kMDItemDownloadedDate no aparece en la listamdls
. Más curioso y más curioso. El campo Fecha agregada tampoco está almacenado en un xattr para el directorio . ¿Dónde viven estos metadatos?xattr
es un script de Python, supongo que debería ser posible hurgar en este script y descubrir cómo obtener los datos binarios del atributo en binario, en lugar de hexadecimal, para que pueda alimentarlo directamenteplutil
.No puedo encontrar una manera de configurar la "Fecha de adición" que se muestra en el Finder.
Creo que tiene razón en que se ha recuperado del
kMDItemDateAdded
atributo de metadatos del índice de Spotlight . Sin embargo, Spotlight parece derivar esto de alguna manera.Intenté configurar un atributo de archivo extendido llamado
com.apple.metadata:kMDItemDateAdded
a un valor de fecha en uno de varios formatos diferentes, incluido el formato utilizadokMDItemDateAdded
y ninguno de ellos fue recogido por el índice de Spotlight, es decir, sin importar el valor mostradoxattr
, el valor mostrado pormdls
no fue cambiado.Me supongo , aunque no sé a ciencia cierta, que Spotlight simplemente establece esta fecha sobre la base de la primera vez que indexa un archivo en un lugar determinado, y no verifica cualquier otra metadatos con el fin de generarlo. Si
mv
un archivo sale de Descargas y vuelve a ingresar, la Fecha agregó actualizaciones a cuándo se movió nuevamente, pero ninguno de los metadatos del archivo parece afectado, solo los metadatos de Spotlight.Entonces, en resumen, supongo que Date Added solo se almacena en algún lugar en las tripas bastante crípticas de /.Spotlight-V100, y a menos que alguien pueda encontrar una manera de decirle a Spotlight que actualice una entrada de metadatos a un valor arbitrario, puedo ' No veo una manera de hacer esto.
fuente
¡Gracias a Daniel Lawson por la solución! Todavía funciona bien, incluso dos años después.
Tengo dos adiciones:
1) Tenga en cuenta que hay un pequeño error en el código de la respuesta aceptada.
Esta línea:
... tiene un apóstrofe adicional, que desencadena un error "EOF inesperado". Debería leer:
2) Más importante, comenzando con Mavericks 10.9.2, la configuración del sistema requiere derechos de administrador. Por lo tanto, cada llamada al script de shell debe seguir esta fórmula:
Aquí está la versión modificada completa del AppleScript, confirmada para funcionar en 10.9.3:
fuente