¿Hay alguna manera de evitar que se creen esos molestos archivos .DS_Store?

¿Hay alguna manera (por ejemplo, un hack binario en Finder) para evitar que cree .DS-Stores en volúmenes LOCALES?

Estoy usando Leopard, por lo tanto, estos no funcionan:

Además, BlueHarvest ralentiza mi computadora.

Consulte: Impedir que MacOS cree archivos .* y ._* : ¿algún motivo específico por el que no quiera estos?
@slhck: blueharvest funciona, pero ralentiza mi computadora. estoy buscando algo como esto
Olvidé que TotalFinder solo funciona en ≥ 10.6, lo siento.
Esta pregunta estaría demasiado localizada si fuera específica de Leopard y versiones anteriores. Las respuestas solo pueden mencionar la versión admitida actual más baja o más alta cuando corresponda.

Respuestas (6)

Soluciones de terceros

En mi experiencia, BlueHarvest es el mejor de su clase. Técnicamente, no es una respuesta a la pregunta; puede eliminar pero no prevenir .DS_Storearchivos.

Si BlueHarvest es efectivo pero no se adapta a su caso de uso, se vuelve difícil dar una respuesta aceptable a su pregunta.

Si no tiene una solución de terceros aceptable, entonces debe trabajar con lo que es parte integral de Leopard...

Sin una solución de terceros: restrinja su uso de Finder

Al evitar las vistas que no desea guardar, puede evitar la creación de .DS_Storearchivos.

A la mayoría de los usuarios les resultará difícil contenerse de esta manera, pero es una respuesta verdadera dentro de las limitaciones de la pregunta.

http://diigo.com/0qiwp para obtener una vista comentada de http://lists.apple.com/archives/applescript-users/2006/Jun/msg00180.html donde Matt Deatherage (ex ingeniero de Apple) explica .DS_Storey otros tipos de archivo.

Para evitar que aparezcan esos feos archivos .DS_Store, parece haber una opción relativamente nueva para hacer esto limpiamente, no solo para las unidades de red, como:

defaults write com.apple.desktopservices DSDontWriteNetworkStores -bool true

pero también para volúmenes conectados por USB:

defaults write com.apple.desktopservices DSDontWriteUSBStores -bool true

En relación con el título de la pregunta de los OP, esta es la mejor solución sin hacks, ya que aborda no solo el mal comportamiento de la red, sino que también afecta a la mayoría de los discos conectados. Y esa podría ser la mayor molestia para la mayoría de los usuarios que comparten dispositivos como memorias USB entre diferentes entornos. Utiliza solo las opciones proporcionadas por Apple y no interfiere con el funcionamiento normal de ninguna manera.

En relación con la situación concreta explicada en el cuerpo de los OP, tiene un valor limitado, ya que esta opción de USB solo está disponible en versiones posteriores de OS X/macOS. Además, esto todavía no aborda el problema de la .DS_Storecreación en discos internos, donde también puede ser una molestia tratar con ellos. Aunque en ese lugar en realidad podrían servir para algún tipo de propósito.

Una solución más completa a este problema, aunque más pirateada, que funciona en la mayoría de las versiones del sistema operativo Mac es la siguiente: Para eliminar por completo este desagradable comportamiento en todos los discos, y con un parche binario/inyector de código como la cuestión de el OP anhela: hay DeathToDSStore / with source .

Ambas opciones asumen que cualquiera todavía usa Finder... Usar un administrador de archivos diferente también resolvería este problema. Existen numerosos contendientes para reemplazar Finder para la administración de archivos en macOS. Dos de los mejores perros en este campo son Pathfinder o XFile .

+1 para el comando USBStores (¡no lo conocía!), así como para DeathToDSStore.
Esta respuesta no parece funcionar para la partición del disco local.

No he encontrado ninguna forma de evitar que se creen, pero puede eliminarlos automáticamente con un script:

#!/bin/sh

find ~ -name .DS_Store -exec /bin/rm -f -- {} \;

exit 0

Ejecútelo cada X minutos a través launchdde o cron. Casi no toma tiempo ejecutarlo en mi iMac de varios años. Solo buscará en su $HOME (~), pero ahí es donde estarán la mayoría de ellos. Cambie ~ a / si desea eliminarlos en todo el disco, pero eso llevará mucho más tiempo, así que ajuste la frecuencia en consecuencia.

También podrías usar find ~ -name .DS_Store -delete. Y no olvide la -namebandera: sin ella, el comando se aplicaría a todos los archivos en ~y ./.DS_Store.
Sé que puedo usar un script, pero su respuesta no responde a la pregunta.
La respuesta a la pregunta es "no". No hay forma de evitar que se creen (excepto en los recursos compartidos de red, que tampoco era la pregunta). Esta respuesta intenta lograr el mismo resultado final. Si SE tuviera una categoría de respuesta llamada "Solución alternativa", la habría puesto debajo de eso. Ciertamente, no es una "respuesta" peor que un demonio adjunto a un marco (< asepsis.binaryage.com/> ), y mucho más seguro que piratear un sistema binario, y se ejecuta en cualquier versión de Mac OS X.
Excepto que no logra el mismo resultado final. Blueharvest es una mejor solución (el mismo resultado final, excepto por el hecho de que la computadora funciona como un cerdo). También la asepsia es un controlador IIRC.
a) Dije "trata de lograr el mismo resultado final", es decir, no tener archivos .DS_Store en su computadora. b) "Mejor" es un término relativo, ya que ralentizar todo el funcionamiento de la computadora es un inconveniente importante. c) la asepsia es "una extensión del kernel y un demonio para todo el sistema del espacio del usuario" y se "carga en cada proceso de lanzamiento", lo cual es bastante parecido a lo que dije. Pareces mucho más interesado en decirme que estoy equivocado que en aceptar ayuda, así que dejaré de ofrecerla.
Porque eso no ayuda.
¿Cómo se "usa launchd" para hacer esto?
@kinokijuf, abandona la actitud de derecho. Cuando alguien te ofrece ayuda gratuita, no puedes criticarlo. Es justo decir simplemente, una vez, que no es lo que estás buscando, pero la defensa de TJ Luoma (que lamentablemente hiciste necesaria) es una señal más que suficiente para que te calles. Dios.
Lleva mucho tiempo ejecutar el comando. ¡Más de 5 minutos seguro!

Prueba este comando en la terminal:

defaults write com.apple.desktopservices DSDontWriteNetworkStores true

Parece funcionar para mí.

Funciona solo para red, no para volúmenes locales.
Estás en lo correcto. Me disculpo por mi confusión.
Este es el único caso real en el que pude ver que .DS_Stores es molesto. Están ocultos en Mac OS de forma predeterminada y son cruciales para guardar la configuración de vista para carpetas individuales.
Pero no quiero guardar la configuración de vista.

Tuve el mismo problema y las soluciones para evitar esos molestos archivos en el disco montado local no me funcionaron.

Al final, encontré una solución adecuada, que consiste en buscar y eliminar periódicamente estos archivos solo en el disco local montado. Agregué un cronjob con el siguiente contenido:

9 */1 * * * find -x ~ -path /Users/adietz/Library -prune -o -fstype local  -name .DS_Store -print -exec /bin/rm -f -- {} \; >> ~/.cron.log 2>&1

Esto es lo que significa:

  • 9 */1 * * *realiza el comando cada 9 minutos después de la hora (por lo tanto, 10:09, 11:09, 12:09, ...)
  • find -x ... -fstype local(opcional) Realice la búsqueda solo en el sistema de archivos local montado e ignore cualquier otro disco montado bajo~
  • ~la carpeta para buscar (carpeta de inicio)
  • -path /Users/user/Library -prune -o(opcional) expresión para NO buscar en la Librarycarpeta (lo que podría arrojar errores de entrada/salida).
  • -name .DS_Storeel nombre del archivo a buscar
  • -print(opcional) imprimir una ocurrencia encontrada
  • -exec /bin/rm -f -- {} \;eliminar el archivo
  • >> ~/.cron.log 2>&1(opcional) Agrega la salida a un archivo, para que pueda verificar que funciona y dónde se han eliminado los archivos molestos

EDITAR: aparentemente ya no funciona en las versiones más nuevas de macOS

Creé un script más eficiente (destinado a ejecutarse continuamente como daemon), hará una ejecución findal principio para borrar los archivos ya existentes y detectará nuevos archivos en tiempo real a través de fsevents. Por lo tanto, se destruirán inmediatamente a medida que se creen, y el uso de recursos es muy bajo. AFAIK, esta es la mejor manera posible de deshacerse de ellos sin deshabilitar SIP.
Aquí está: https://github.com/magicgoose/DS_Store-Kill

Esta sugerencia no funciona. Los archivos aún se crean.
Lo siento por eso. hubo varios lanzamientos de macOS desde entonces, y no mantuve este script porque dejé de usar macOS como mi sistema operativo principal.