พื้นฐานของการแยกไฟล์เมื่อสร้างไฟล์ 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 shell (ค่าเริ่มต้นสำหรับ OS X) คุณจะต้องใช้เครื่องหมายคำพูดเพื่อยกเว้นด้วย wildcard และรูปแบบ
ยกเว้นประเภทไฟล์เฉพาะจากไฟล์ Zip
ด้วย wildcard คุณสามารถยกเว้นไฟล์บางประเภททั้งหมดโดยเน้นที่ส่วนขยาย ตัวอย่างเช่นคำสั่งนี้จะซิปทั้งไดเรกทอรีลบ.jpg
ไฟล์ใด ๆ:
zip -r archive.zip directory -x "*.jpg"
ที่สามารถแก้ไขได้สำหรับนามสกุลไฟล์หรือรูปแบบเฉพาะที่ตรงกับชื่อไฟล์
แยกไดเรกทอรี. git หรือ. svn ออกจาก Zip Archive
ซิปไดเรกทอรีลบ.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 และคำตอบที่ได้รับการยอมรับ :-)