En primer lugar, si no ha instalado zip, instálelo primero de la siguiente manera:
Los conceptos básicos de la exclusión de archivos al crear un archivo zip se centran alrededor de la -x
bandera, que se utiliza para excluir archivos del archivo que coinciden con un nombre o patrón específico. En su forma más básica, se verá así:
zip archive.zip files -x "ExcludeMe"
Lo que significa que puede excluir un solo archivo, digamos que se llama "Nothanks.jpg"
zip archive.zip images/ -x "Nothanks.jpg"
Veamos algunos ejemplos específicos donde esto es útil.
Excluir archivos .DS_Store de archivos Zip
Esto evitará que los .DS_Store
archivos de metadatos Mac normalmente invisibles se incluyan en un archivo zip, que se incluyen por defecto:
zip -r archivename.zip archivedirectory -x "*.DS_Store"
Sin embargo, si el directorio incluye subdirectorios, también querrá usar otra variación de ese comando para excluir los archivos ds_store de los subdirectorios:
zip -r archive.zip directory -x "*/\.DS_Store"
Nota: no todos los shells requieren las comillas para que este comando funcione correctamente, pero en el shell bash (el predeterminado para OS X) necesitará usar las comillas para excluir con comodines y patrones.
Excluir tipos de archivo específicos de un archivo zip
Con los comodines, también puede excluir todos los archivos de un tipo determinado al enfocarse en la extensión. Por ejemplo, este comando comprimirá un directorio completo, menos cualquier .jpg
archivo:
zip -r archive.zip directory -x "*.jpg"
Eso podría modificarse para cualquier extensión de archivo o patrón específico que coincida con un nombre de archivo.
Excluir el directorio .git o .svn de un archivo Zip
Comprime un directorio, menos .git
y sus contenidos:
zip -r zipdir.zip directorytozip -x "*.git*"
Comprime una carpeta, sin incluir el .svn
directorio:
zip -r zipped.zip directory -x "*.svn*"
Excluir todos los archivos ocultos de un archivo zip
Dado que se pueden usar patrones y comodines, también puede excluir cualquiera o todos los archivos y carpetas invisibles que se crean con el prefijo de un punto, ya sea un directorio como .svn
un archivo individual como .bash_profile
o .htaccess
.
zip -r archivename.zip directorytozip -x "*.*"
O para excluir todos los archivos invisibles de todos los subdirectorios:
zip -r archive.zip directory -x "*/\.*"
find community-chess/ -path '*/.*' -prune -o -type f -print | zip ~/community-chess.zip -@
) es más largo de lo esperado, pero funciona bien. También se incluyen subdirectorios, por lo que +1 y una respuesta aceptada :-)