Bir zip arşivi oluştururken dosya dışlamanın temelleri, -xbelirli bir ad veya desenle eşleşen dosyaları arşivden çıkarmak için kullanılan bayrak çevresinde ortalanır . En temelde şöyle görünecek:
zip archive.zip files -x "ExcludeMe"
Tek bir dosyayı hariç tutabileceğiniz anlamına gelir, “Nothanks.jpg” olarak adlandırılır.
zip archive.zip images/ -x "Nothanks.jpg"
Bunun yararlı olduğu birkaç spesifik örneği ele alalım.
.DS_Store Dosyalarını Zip Arşivlerinden Çıkar
Bu, tipik olarak görünmeyen Mac meta veri .DS_Store
dosyalarının, varsayılan olarak paketlenmiş olan bir zip arşivine eklenmesini önler :
zip -r archivename.zip archivedirectory -x "*.DS_Store"
Bununla birlikte, dizin alt dizinler içeriyorsa, ds_store dosyalarını alt dizinlerden çıkarmak için bu komutun başka bir varyasyonunu kullanmak istersiniz:
zip -r archive.zip directory -x "*/\.DS_Store"
Not: Tüm kabuklar bu komutun alıntılarının düzgün çalışmasını gerektirmez, ancak bash kabuğunda (OS X için varsayılan) joker karakterleri ve desenleri hariç tutmak için tırnak işaretleri kullanmanız gerekir.
Bir Zip Arşivinden Belirli Dosya Türlerini Hariç Tut
Joker karakterlerle, uzantıya odaklanarak belirli bir türdeki tüm dosyaları dışlayabilirsiniz. Örneğin, bu komut eksi herhangi bir .jpgdosyayı ekleyerek bütün bir dizini sıkıştırır :
zip -r archive.zip directory -x "*.jpg"
Bu, bir dosya adında eşleşen herhangi bir belirli dosya uzantısı veya deseni için değiştirilebilir.
.Git veya .svn Dizini bir Zip Arşivinden hariç tut
Bir dizini sıkıştırın, eksi .gitve içeriği:
zip -r zipdir.zip directorytozip -x "*.git*"
.svnDizini eklemeksizin bir klasörü sıkıştırın:
zip -r zipped.zip directory -x "*.svn*"
Tüm Gizli Dosyaları Zip Arşivinden Çıkar
Desen ve joker kullanılabilir olduğundan, ayrıca böyle bir dizin olsun, bir süre öneki olan bunu yapılır herhangi bir veya tüm görünmez dosya ve klasörleri hariç olabilir .svnveya benzeri bir tek dosya .bash_profileveya .htaccess.
zip -r archivename.zip directorytozip -x "*.*"
Veya tüm görünmez dosyaları tüm alt dizinlerden çıkarmak için:
zip -r archive.zip directory -x "*/\.*"
find community-chess/ -path '*/.*' -prune -o -type f -print | zip ~/community-chess.zip -@) beklenenden daha uzun, ancak iyi çalışıyor. Alt dizinler de dahil edilmiştir, yani +1 ve kabul edilen bir cevap :-)