Comprimir sin .DS_Store y __MACOSX

Cuando comprimo una carpeta o un archivo haciendo clic con el botón derecho en el menú de Mac OS X, el archivo archivado contiene las carpetas .DS_Store y __MACOSX . Debido a que comparto el archivo archivado en línea para descargarlo, los usuarios de Windows intentan por error buscar el archivo en la carpeta __MACOSX .

Necesito tener una opción de archivo más limpia. No quiero incluir la carpeta .DS_Store y __MACOSX , sino solo el archivo o la carpeta en el archivo comprimido.

Todo lo que encontré es CleanArchiver pero es una aplicación GUI. Realmente toma tiempo y tengo muchos archivos para comprimir. Estoy buscando una solución por menú contextual si es posible.

¿Hay alguna solución que pueda recomendar para una compresión limpia?

en mi caso, estaba empaquetando los archivos para usarlos en Cloud Functions en GCP. Los archivos ocultos causan error.

Respuestas (5)

Puede usar el comando zip en la Terminal para comprimir los archivos sin el .DS_Storey __MACOSXotros .*archivos.

  1. Abrir terminal (buscar terminal en Spotlight)
  2. Navegue a la carpeta que desea comprimir usando el cdcomando
  3. Pega esto:
    zip -r dir.zip . -x ".*" -x "__MACOSX"
    

Ejemplo

Digamos que tiene una carpeta en su escritorio llamada Foldercon cosas para comprimir.
Abra la terminal y escriba los siguientes comandos:

  1. cd Desktop/Folder
    
  2. zip -r dir.zip . -x ".*" -x "__MACOSX"
    

Ahora tiene un archivo llamado dir.zipsin __MACOSXy .*archivos en la carpeta Folderde su escritorio.

+1 ¿Puedes incluir eso en un servicio de automatización?
Técnicamente hablando, si usa zippara crear el archivo zip, "__MACOSX/" no se creará en primer lugar, por lo que todo lo que realmente necesita es zip -r dir.zip .. Sin embargo, si "__MACOSX/" de alguna manera se coló allí, su solución lo eliminará.
También puede verificar fácilmente que su archivo zip no tiene __MACOSX escribiendo en la consolazipinfo dir.zip
Parece que esto excluirá todos los archivos que comiencen con un punto, no solo .ds_store. ¿Tengo razón?
@somnolentsurfer Eso es correcto.

Solo un poco de información extra...

Tengo entendido que __MACOSX es un subdirectorio creado artificialmente por las herramientas de la GUI de Mac para contener metadatos como atributos extendidos que normalmente no se pueden guardar en un archivo zip.

Si usa las herramientas de la GUI de Mac para descomprimir el archivo zip, las herramientas sabrán qué hacer con __MACOSX y el directorio no se descomprimirá.

Los problemas ocurren cuando envía su archivo .zip a usuarios de Windows o Linux, o simplemente usa el unzipprograma de propósito general para descomprimirlo. Esas herramientas no sabrán que __MACOSX es especial y simplemente lo desempaquetarán.

La opción más simple es usar zippara empaquetar su archivo zip en lugar de la herramienta integrada de Mac. zipno creará __MACOSX y su problema está resuelto. (Perderá los metadatos en el proceso, pero probablemente no los quería de todos modos).

zip -r dir.zip dir

Si es demasiado tarde y ya tiene un archivo zip con __MACOSX, aún puede eliminarlo con:

zip -d foo.zip __MACOSX .DS_Store

Finalmente, la respuesta aceptada es la mejor porque si por alguna razón __MACOSX realmente existe en su directorio (por ejemplo, porque usted solía unzipcrearlo anteriormente), la opción -x evitará que se empaquete.

.DS_Store todavía se crea cuando se usa zip -r dir.zip.
Sí, me resulta molesto a mí mismo. Esto es similar, pero no igual, a las cosas almacenadas en __MACOSX
zip -d foo.zip __MACOSX .DS_Store -> funciona

Prueba con Keka . Viene con una opción para excluir .DS_Store

ingrese la descripción de la imagen aquí

El único que realmente he usado es BetterZip [$20]

Es una aplicación GUI, pero es compatible con Applescript & Services, con la que puede ejecutar ajustes preestablecidos con su configuración predeterminada, incluida la omisión de archivos específicos de Mac como .DS_Store y __MACOSX. Posiblemente valga la pena echarle un vistazo.

Desde la ayuda de BetterZip...

BetterZip admite dos servicios: uno para extraer y otro para crear archivos. Puede configurar lo que harán los servicios de BetterZip con los ajustes preestablecidos.

Para usar un servicio, seleccione uno o más archivos o carpetas en el Finder y elija Comprimir con BetterZip o Extraer con BetterZip desde el menú Finder > Servicios o el submenú Servicios en el menú contextual.

Incluso puede establecer métodos abreviados de teclado para los servicios de BetterZip, por ejemplo, ^⌥⌘C para comprimir y ^⌥⌘E para extraer. Para configurar accesos directos para servicios, vaya a Preferencias del sistema > Teclado > Accesos directos de teclado y elija Servicios en la tabla de la izquierda. En la tabla de la derecha, desplácese hasta Archivos y carpetas, elija Comprimir con BetterZip y presione ↩. Aparecerá un campo de texto editable. Presione el atajo deseado.

Uno de mis guardados preestablecidos...

ingrese la descripción de la imagen aquí

Esa es una buena opción de GUI para los usuarios de Setapp.

Basado en la respuesta de itunes . También necesitaba eliminar DS_Store en directorios anidados de la siguiente manera.

zip -r my.zip . -x "**/.DS_Store"