Основи виключення файлів при створенні zip-архіву зосереджені навколо -x
прапора, який використовується для виключення файлів з архіву, які відповідають конкретному імені або шаблону. Це найосновніше, це виглядатиме так:
zip archive.zip files -x "ExcludeMe"
Це означає, що ви можете виключити один файл, скажімо, що він названий "Nothanks.jpg"
zip archive.zip images/ -x "Nothanks.jpg"
Розкриємо кілька конкретних прикладів, коли це корисно.
Виключіть .DS_Store файли з Zip Archives
Це запобіжить .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 та прийнята відповідь :-)