บีบอัดไฟล์ซ้ำในไดเรกทอรีและไดเรกทอรีย่อยโดยใช้เครื่องมือ“ zip” ในบรรทัดคำสั่งใน Mac OS X และยกเว้นไฟล์. DS_Store จากโฟลเดอร์ย่อยทั้งหมด


10

ฉันกำลังพยายามสร้างไฟล์ ZIP โดยใช้zipเครื่องมือบรรทัดคำสั่งที่มาพร้อมกับเทอร์มินัล Mac OS X ฉันต้องการบีบอัดเนื้อหาของโฟลเดอร์ปัจจุบันซ้ำ แต่ไม่รวม.DS_Storeไฟล์ ฉันพยายามทำสิ่งนี้:

zip -r myarchive.zip . -x .DS_Store

-x .DS_Storeไม่คิด.DS_Storeไฟล์ในโฟลเดอร์ปัจจุบัน แต่ไม่ได้อยู่ในโฟลเดอร์ย่อยเพิ่มซ้ำ ฉันจะแยก.DS_Storeไฟล์ทั้งหมดออกจากโฟลเดอร์ย่อยทั้งหมดได้อย่างไร

คำตอบ:


17

เพิ่มสัญลักษณ์แทนลงในตัวเลือกไม่รวม

zip -r myarchive.zip . -x "*.DS_Store"

ขอบคุณสำหรับคำตอบ. มันใช้งานได้ แต่ทำไม :) คุณช่วยอธิบายได้มั้ย
OMA

การ*ขยายเป็นส่วนใดส่วนหนึ่งของพา ธ เมื่อไฟล์ zip บีบอัดไฟล์และไดเรกทอรีซ้ำ ๆ ดังนั้น./.DS_Storeจากนั้น./*/.DS_Storeเป็นต้นมาจะถูกแยกออกจากไฟล์เก็บถาวร
fd0

อ่าน่าสนใจ ดังนั้นสัญลักษณ์แทนการทำงานจะแตกต่างจากใน Windows world โดยที่ "* .DS_Store" จะหมายถึง "ไฟล์ใด ๆ ที่ลงท้ายด้วย. DS_Store"
OMA

1

มากที่สุดเท่าที่ฉันต้องการที่จะไม่รวมทุกไฟล์ที่ซ่อนไว้เช่น.DS_Storeหรือ.gitหรือ.gitignore

ด้วยคำสั่งง่ายๆที่คุณสามารถดูแลได้ทั้งหมดและบีบอัดไฟล์และโฟลเดอร์ย่อยทั้งหมดซ้ำ ๆ

zip -r archive.zip folder -x "*/\.*"

หรือดียิ่งขึ้นสร้างฟังก์ชันใน zsh เพื่อทำให้ชีวิตง่ายขึ้น

open ~/.zshrc

เพิ่มรหัสต่อไปนี้ในส่วนนามแฝงของคุณ

function zip-visible(){
    zip -r $1 $2 -X -x "*/\.*"
}

โหลดการกำหนดค่า zsh อีกครั้ง

source ~/.zshrc

ใช้แบบนี้

zip-visible archive.zip folder

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.