Dasar-dasar pengecualian file saat membuat arsip zip dipusatkan di sekitar -x
bendera, 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 .jpg
file:
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 .git
dan isinya:
zip -r zipdir.zip directorytozip -x "*.git*"
Zip folder, tanpa termasuk .svn
direktori:
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 .svn
atau file individual seperti .bash_profile
atau .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 :-)