una que puede existe especificado encontrar eliminar como carpeta archivo __macosx macos zip

macos - que - eliminar carpeta no se puede encontrar el archivo especificado



Comprimir comprimir Mac sin la carpeta__MACOSX? (12)

Cuando comprime archivos con el compresor zip incorporado en Mac OSX, da como resultado una carpeta extra llamada "__MACOSX" creada en el zip extraído.

¿Puedo ajustar mi configuración para evitar que se cree esta carpeta o debo comprar una herramienta de compresión de terceros?

ACTUALIZACIÓN : Acabo de encontrar una aplicación gratuita para OSX que resuelve mi problema: " YemuZip "

ACTUALIZACIÓN 2 : YemuZip ya no es freeware


¿Te refieres a la herramienta de línea de comando zip o al comando Compress del Finder?

Para zip , puedes probar la opción --data-fork . Si eso no funciona, puede probar --no-extra , aunque eso parece ignorar otros metadatos de archivos que pueden ser valiosos, como uid / gid y file times.

Para el comando Compress del Finder, no creo que haya ninguna opción para controlar su comportamiento. Es para el caso simple.

La otra herramienta, y tal vez la que el Buscador realmente usa debajo del capó, es ditto . Con las opciones -c -k , crea archivos comprimidos. Con esta herramienta, puede experimentar con --norsrc , --noextattr , --noqtn , --noacl y / o simplemente dejar fuera de la opción --sequesterRsrc (que, de acuerdo con la página del manual, puede ser responsable del subdirectorio __MACOSX ) Aunque, tal vez la ausencia de --sequesterRsrc simplemente significa usar AppleDouble Format, que crearía archivos ._ por todo el lugar en lugar de un directorio __MACOSX .


Así es como evito el directorio __MACOSX cuando comprime archivos con el comando tar :

$ cd dir-you-want-to-archive $ find . | xargs xattr -l # <- list all files with special xattr attributes ... ./conf/clamav: com.apple.quarantine: 0083;5a9018b1;Safari;9DCAFF33-C7F5-4848-9A87-5E061E5E2D55 ./conf/global: com.apple.quarantine: 0083;5a9018b1;Safari;9DCAFF33-C7F5-4848-9A87-5E061E5E2D55 ./conf/web_server: com.apple.quarantine: 0083;5a9018b1;Safari;9DCAFF33-C7F5-4848-9A87-5E061E5E2D55

Eliminar el atributo primero:

find . | xargs xattr -d com.apple.quarantine

Ejecutar find . | xargs xattr -l find . | xargs xattr -l find . | xargs xattr -l nuevamente, asegúrese de que ningún archivo tenga el atributo xattr. entonces estás listo para ir:

tar cjvf file.tar.bz2 dir


Cuando tuve este problema, lo hice desde la línea de comando:

zip file.zip uncompressed

EDITAR , después de muchas viñetas: utilicé esta opción hace algún tiempo y no sé dónde la aprendí, así que no puedo darle una mejor explicación. La answer Chris Johnson es correcta, pero no borraré la mía. Como dice un comentario, es más preciso lo que OP está pidiendo, ya que se comprime sin esos archivos, en lugar de eliminarlos de un archivo comprimido. Me resulta más fácil recordarlo también.


Este comando lo hizo por mí:

zip -r Target.zip Source -x "*.DS_Store"

Target.zip es el archivo zip para crear. Source es el archivo / carpeta de origen para cerrar. Y el parámetro _x especifica el archivo / carpeta para no incluir. Si lo anterior no funciona por alguna razón, intente esto en su lugar:

zip -r Target.zip Source -x "*.DS_Store" -x "__MACOSX"


Estoy usando este script de Automator Shell para solucionarlo. Se muestra como un elemento de menú contextual (haciendo clic con el botón derecho en cualquier archivo que aparezca en Finder).

while read -r p; do zip -d "$p" __MACOSX//* || true zip -d "$p" /*/.DS_Store || true done

  1. Crear un nuevo servicio con Automator
  2. Seleccione "Archivos y carpetas" en "Finder"
  3. Agregue una "Acción de script de shell"


La utilidad de línea de comando zip nunca crea un directorio __MACOSX , por lo que puede ejecutar un comando como este:

zip directory.zip -x /*.DS_Store -r directory

En el siguiente resultado, a.zip que creé con la utilidad de línea de comandos zip no contiene un directorio __MACOSX , pero sí a 2.zip que creé desde Finder.

$ touch a $ xattr -w somekey somevalue a $ zip a.zip a adding: a (stored 0%) $ unzip -l a.zip Archive: a.zip Length Date Time Name -------- ---- ---- ---- 0 01-02-16 20:29 a -------- ------- 0 1 file $ unzip -l a/ 2.zip # I created `a 2.zip` from Finder before this Archive: a 2.zip Length Date Time Name -------- ---- ---- ---- 0 01-02-16 20:29 a 0 01-02-16 20:31 __MACOSX/ 149 01-02-16 20:29 __MACOSX/._a -------- ------- 149 3 files

-x .DS_Store no excluye los archivos .DS_Store dentro de los directorios, pero -x /*.DS_Store-x /*.DS_Store hace.

El archivo de nivel superior de un archivo comprimido con varios archivos generalmente debe ser un solo directorio, porque si no lo está, algunas utilidades de desinstalación (como unzip y 7z , pero no Archive Utility, The unar , dtrx o dtrx ) no crean un dtrx . contiene un directorio para los archivos cuando se extrae el archivo, lo que a menudo hace que los archivos sean difíciles de encontrar, y si se extraen varios archivos al mismo tiempo, puede ser difícil saber qué archivos pertenecen a qué archivo.

Archive Utility solo crea un directorio __MACOSX cuando crea un archivo en el que al menos un archivo contiene metadatos, como atributos extendidos, indicadores de archivos o una bifurcación de recursos. El directorio __MACOSX contiene archivos AppleDouble cuyo nombre de archivo comienza con ._ que se usan para almacenar metadatos específicos de OS X. La utilidad de línea de comandos zip descarta metadatos como atributos extendidos, indicadores de archivos y bifurcaciones de recursos, lo que también significa que los metadatos como etiquetas se pierden y que los alias dejan de funcionar porque la información en un archivo de alias se almacena en una bifurcación de recursos.

Normalmente, puede descartar los metadatos específicos de OS X, pero para ver qué archivos de metadatos contienen, puede usar xattr -l . xattr también incluye información sobre herramientas y banderas de archivos, porque a pesar de que en realidad no se almacenan como atributos extendidos, se puede acceder a ellos a través de la interfaz de atributos extendidos. Tanto Archive Utility como la utilidad de línea de comando zip descartan ACL.


Las carpetas no deseadas también se pueden eliminar de la siguiente manera:

zip -d filename.zip "__MACOSX*"

Funciona mejor para mí


No puedes.

Pero lo que puede hacer es eliminar esas carpetas no deseadas después de comprimirlas. El zip línea de comandos toma diferentes argumentos donde uno, el -d , es para eliminar contenidos basados ​​en una expresión regular. Entonces puedes usarlo así:

zip -d filename.zip __MACOSX//*


Ok, después de detenerme en esto encontré esta solución, desde la terminal:

zip -r -X Archive.zip *

Donde-X significa: Excluya esos archivos de recursos de Mac invisibles como "_MACOSX" o "._Filename" y archivos de tienda .ds

source


Puede zip -d filename.zip __MACOSX//* después del hecho por zip -d filename.zip __MACOSX//*


Tengo una mejor solución después de leer todas las respuestas existentes. Todo podría hacerse mediante un flujo de trabajo en un solo clic con el botón derecho. SIN software adicional, SIN elementos de línea de comando complicados y SIN trucos de shell.

El flujo de trabajo del automatizador:

  • Entrada: archivos o carpetas desde cualquier aplicación.
  • Paso 1: Crear archivo, el sistema incorporado con parámetros predeterminados.
  • Paso 2: Ejecute el comando Shell, con la entrada como parámetros. Copie el comando a continuación.

    zip -d "$@" "__MACOSX/*" || true

    zip -d "$@" "*/.DS_Store" || true

Guárdalo y terminamos! Simplemente haga clic con el botón derecho en la carpeta o en la mayoría de los archivos y elija el flujo de trabajo en el menú de servicios. Se creará un archivo sin metadatos al costado.


no comprimir ningún archivo oculto:

zip newzipname filename.any -x "/.*"

con esta pregunta, debería ser como:

zip newzipname filename.any -x "/__MACOSX"

Sin embargo, se debe decir que el comando zip se ejecuta en el terminal simplemente comprimiendo el archivo, no comprime ningún otro. Entonces haz esto, el resultado es el mismo:

zip newzipname filename.any