Dasar-dasar pengecualian file saat membuat arsip zip dipusatkan di sekitar -xbendera, yang digunakan untuk mengecualikan file dari arsip yang cocok dengan nama atau pola tertentu. Pada dasarnya, akan terlihat seperti ini:
zip archive.zip files -x "ExcludeMe"
Berarti Anda dapat mengecualikan satu file, katakan itu bernama "Nothanks.jpg"
zip archive.zip images/ -x "Nothanks.jpg"
Mari kita bahas beberapa contoh spesifik di mana ini berguna.
Kecualikan .DS_Store File dari Arsip Zip
Ini akan mencegah .DS_Store
file metadata Mac yang biasanya tidak terlihat dimasukkan dalam arsip zip, yang dibundel secara default:
zip -r archivename.zip archivedirectory -x "*.DS_Store"
Jika direktori menyertakan subdirektori, Anda harus menggunakan variasi lain dari perintah itu untuk mengecualikan file ds_store dari subdirektori juga:
zip -r archive.zip directory -x "*/\.DS_Store"
Catatan: tidak semua shell membutuhkan kutipan agar perintah ini berfungsi dengan baik, tetapi di bash shell (default untuk OS X) Anda harus menggunakan tanda kutip untuk mengecualikan dengan wildcard dan pola.
Kecualikan Jenis File Tertentu dari Arsip Zip
Dengan wildcard, Anda juga dapat mengecualikan semua file dari jenis tertentu dengan memfokuskan pada ekstensi. Sebagai contoh, perintah ini akan mem-zip seluruh direktori, minus semua .jpgfile:
zip -r archive.zip directory -x "*.jpg"
Itu bisa dimodifikasi untuk ekstensi file tertentu atau pola yang cocok dengan nama file.
Kecualikan Direktori .git atau .svn dari Arsip Zip
Zip direktori, minus .gitdan isinya:
zip -r zipdir.zip directorytozip -x "*.git*"
Zip folder, tanpa termasuk .svndirektori:
zip -r zipped.zip directory -x "*.svn*"
Kecualikan Semua File Tersembunyi dari Arsip Zip
Karena pola dan wildcard dapat digunakan, Anda juga dapat mengecualikan semua atau semua file dan folder yang tidak terlihat yang dibuat dengan diawali dengan suatu periode, apakah itu seperti direktori .svnatau file individual seperti .bash_profileatau .htaccess.
zip -r archivename.zip directorytozip -x "*.*"
Atau untuk mengecualikan semua file yang tidak terlihat dari semua subdirektori:
zip -r archive.zip directory -x "*/\.*"
find community-chess/ -path '*/.*' -prune -o -type f -print | zip ~/community-chess.zip -@) lebih panjang dari yang diharapkan, tetapi berfungsi dengan baik. Subdirektori juga disertakan, jadi +1 dan jawaban yang diterima :-)