Прежде всего, если у вас не установлен zip, сначала установите его следующим образом:
Основы исключения файлов при создании архива zip сосредоточены вокруг -x
флага, который используется для исключения файлов из архива, которые соответствуют определенному имени или шаблону. В основном это будет выглядеть так:
zip archive.zip files -x "ExcludeMe"
Это означает, что вы можете исключить один файл, скажем, он называется «Nothanks.jpg»
zip archive.zip images/ -x "Nothanks.jpg"
Давайте рассмотрим несколько конкретных примеров, где это полезно.
Исключить файлы .DS_Store из Zip-архивов
Это предотвратит включение обычно невидимых .DS_Store
файлов метаданных Mac в zip-архив, который по умолчанию входит в пакет:
zip -r archivename.zip archivedirectory -x "*.DS_Store"
Однако, если каталог содержит подкаталоги, вы можете использовать другой вариант этой команды, чтобы исключить также файлы ds_store из подкаталогов:
zip -r archive.zip directory -x "*/\.DS_Store"
Примечание: не все оболочки требуют, чтобы кавычки для этой команды работали должным образом, но в оболочке bash (по умолчанию для OS X) вам нужно будет использовать кавычки для исключения с подстановочными знаками и шаблонами.
Исключить определенные типы файлов из Zip-архива
С подстановочными знаками вы также можете исключить все файлы определенного типа, сосредоточившись на расширении. Например, эта команда заархивирует весь каталог, за исключением любых .jpg
файлов:
zip -r archive.zip directory -x "*.jpg"
Это можно изменить для любого конкретного расширения файла или шаблона, соответствующего имени файла.
Исключить каталог .git или .svn из архива Zip
Zip каталог, минус .git
и его содержимое:
zip -r zipdir.zip directorytozip -x "*.git*"
Заархивируйте папку, не включая .svn
каталог:
zip -r zipped.zip directory -x "*.svn*"
Исключить все скрытые файлы из архива Zip
Поскольку можно использовать шаблоны и подстановочные знаки, вы также можете исключить любые или все невидимые файлы и папки, созданные таким образом, с префиксом точки, будь то каталог, подобный .svn
или отдельный файл, подобный .bash_profile
или .htaccess
.
zip -r archivename.zip directorytozip -x "*.*"
Или исключить все невидимые файлы из всех подкаталогов:
zip -r archive.zip directory -x "*/\.*"
find community-chess/ -path '*/.*' -prune -o -type f -print | zip ~/community-chess.zip -@
) длиннее, чем ожидалось, но работает нормально. Подкаталоги также включены, поэтому +1 и принятый ответ :-)