Comprima recursivamente archivos en un directorio y subdirectorios utilizando la herramienta "zip" de línea de comandos en Mac OS X y excluya archivos .DS_Store de TODAS las subcarpetas

10

Estoy tratando de crear un archivo ZIP usando la zipherramienta de línea de comandos que viene con el terminal Mac OS X. Quiero comprimir recursivamente el contenido de la carpeta actual pero excluyendo los .DS_Storearchivos. Estoy intentando con esto:

zip -r myarchive.zip . -x .DS_Store

Las -x .DS_Storeexcluye el .DS_Storearchivo en la carpeta actual, pero no en las subcarpetas añadidas de forma recursiva. ¿Cómo excluyo todos los .DS_Storearchivos de TODAS las subcarpetas también?

OMA
fuente

Respuestas:

17

Agregar un comodín a la opción de exclusión

zip -r myarchive.zip . -x "*.DS_Store"
fd0
fuente
Gracias por tu respuesta. Funciona, pero ¿por qué? :). ¿Podría explicar por favor?
OMA
El se *expande a nada ni a ninguna parte de una ruta, ya que zip comprime recursivamente los archivos y sus directorios. Entonces, ./.DS_Storeentonces ./*/.DS_Storey así sucesivamente se excluyen del archivo.
fd0
Ah interesante. Por lo tanto, el comodín funciona de manera diferente que en el mundo de Windows, donde "* .DS_Store" solo significaría "cualquier archivo que termine con .DS_Store"
OMA
1

La mayoría de las veces quiero excluir todos los archivos ocultos, como .DS_Storeo .gito.gitignore

Con un simple comando puedes ocuparte de todo eso y comprimir todos los archivos y subcarpetas de forma recursiva

zip -r archive.zip folder -x "*/\.*"

O incluso mejor, cree una función en zsh para facilitarle la vida

open ~/.zshrc

Agregue el siguiente código en su sección de alias

function zip-visible(){
    zip -r $1 $2 -X -x "*/\.*"
}

Vuelva a cargar la configuración de zsh

source ~/.zshrc

Usar así

zip-visible archive.zip folder

alev
fuente