¿Cómo puedo comprimir por lotes varias carpetas sin archivos _macosx?

Quiero comprimir varias carpetas al mismo tiempo, donde cada carpeta es su propio archivo zip. Me gustaría crear el zip sin _macosx ni ningún otro archivo oculto y, si es posible, cambiar la extensión del archivo zip a .cbz al mismo tiempo. De esa manera, puedo ejecutar un proceso en una carpeta completa y hacerlo todo rápidamente.

Estoy usando Ubooquity para alojar mis cómics y trata los archivos como corruptos si el archivo _macosx o cualquier otro archivo oculto está dentro del archivo zip.

¿Las carpetas individuales de destino, que desea comprimir (por lotes) individualmente, también contienen subcarpetas o solo archivos dentro de cada carpeta individual de destino para comprimir?
No hay subcarpetas. Tengo una carpeta grande (por ejemplo, Spider-Man) Luego, dentro de esa carpeta hay carpetas para cada número. (Spider-Man 001, Spider-Man 002, etc.) Dentro de esas carpetas están las imágenes jpg. 001.jpg, 002.jpg, etc
Entonces, si en Finder ingresó a la carpeta Spider-Man y seleccionó Spider-Man 001, Spider-Man 002, etc., haga clic con el botón derecho y seleccione Create CBZ Zip Archive, y luego creó Spider-Man 001.cbz, Spider -Man 002.cbz, etc en la carpeta de Spider-Man, ¿estarías feliz con eso? Por supuesto, cada archivo zip no tendrá la carpeta __MACOSX o archivos ocultos como .DS_Store, .localized u otras exclusiones agregadas según sea necesario.
Sí, estaría feliz si pudiera comprimirlos haciendo clic derecho y seleccionando Crear CBZ si no incluye los archivos _macosx y .ds_store. Cuando solo use la opción de compresión predeterminada, las incluirá.

Respuestas (1)

Aquí hay un servicio de Automator que utiliza una sola acción Ejecutar script de Shell para manejar el proceso.

  • En Automator , seleccione: Archivo > Nuevo > Servicio

  • Conjunto: el servicio recibe carpetas seleccionadas en Finder

  • Agregar una acción Ejecutar secuencia de comandos de Shell

    • Configuraciones: Shell: /bin/bash y Pass input: como argumentos
    • Reemplace todo el código predeterminado con el código que se muestra más abajo.
  • Guarde el Servicio de Automator dándole un nombre apropiado, por ejemplo: Create CBZ Zip Archive

Ahora, en Finder , seleccione las carpetas de destino en las que desea un archivo zip individual, con una extensión .cbz para cada carpeta seleccionada, luego haga clic con el botón derecho y seleccione Create CBZ Zip Archive , en la sección de servicios del menú contextual .

Código para ejecutar la acción de secuencia de comandos de Shell :

for d in "$@"; do
    if ! cd "$(dirname "$d")"; then exit; fi
    if ! d="$(basename "$d")"; then exit; fi
    if [[ ! -e "${d}.cbz" ]]; then
        if ! zip -r "${d}.cbz" "$d" -x \*.DS_Store \*.localized; then exit; fi
    fi
done

Notas:

  • Tal como está codificado, solo crea el archivo comprimido filename.cbz si el archivo aún no existe.
  • Crea el archivo comprimido filename.cbz en la misma carpeta que contiene las carpetas seleccionadas.
  • Está escrito de manera que si ocurre un error con cualquiera de los pasos tomados, sale del script sin notificación. El manejo de errores se puede modificar según sea necesario o deseado.
  • De forma predeterminada, zipno incluirá la __MACOSXcarpeta y, si encuentra que hay otros archivos ocultos además de .DS_Storey .localized, aunque no debería ejecutar este último en este caso de uso, puede agregar exclusiones adicionales al zip comando .
  • Tal como está, la única indicación de que la secuencia de comandos ha terminado es cuando el icono de engranaje de servicio de Automator en la barra de menú ha desaparecido. Se pueden agregar otros formularios de notificación de finalización al script o al flujo de trabajo del Servicio de Automator ampliado con acciones adicionales según corresponda, sea necesario o se desee.
  • Tal como está, no tiene lujos, sin embargo, hace lo que está programado para hacer.
Esto funciona perfectamente para mis necesidades. ¡Muchas gracias!
¿Hay alguna forma de agregar el servicio para que aparezca cuando haces clic con el botón derecho en el menú predeterminado o siempre tengo que pasar el cursor sobre la pestaña de servicios?
@Ryan Bolesm ¿Cuántos servicios tiene en el menú contextual de Servicios en Finder? También puede asignarle un acceso directo, por ejemplo: ⇧⌘B
Tengo 1. Configuración de acciones de carpeta... 2. Omnifocus 2 3. Agregar a Wunderlist 4. Cambiar nombre 5. CBZ Zip 6. Revelar en el buscador. ¿Cómo lo agrego como acceso directo?
@Ryan Boles, IIRC Una vez que tiene más de 4 servicios, crea Servicios como un submenú en el menú contextual. Si ejecuta el siguiente comando en la Terminal, debería mostrar todo directamente en el menú contextual: defaults write -g NSServicesMinimumItemCountForContextSubmenu -int 100001Luego, killall Finderpara que el cambio surta efecto. Para agregar un atajo de teclado: Preferencias del Sistema > Teclado > Atajos > Servicios
Dice que tengo que tener 15 para que se muestre. Dice que lo grabó pero está oculto a la vista pública.
@Ryan Boles, Sí, pensé que eran 10, lo siento.