วิธีการแยกไดเรกทอรีและไฟล์ซิปไดเรกทอรี?


32

ฉันจำเป็นต้อง zip ไดเรกทอรียกเว้นไดเรกทอรีย่อยและไฟล์บางส่วน; ฉันใช้สิ่งนี้:

zip -r zipfile.zip . -x ".*" -x "app/bower_components" -x "node_modules" -x "*.zip" -x "node_modules"

ไม่ประสบความสำเร็จ node_modulesเป็นโฟลเดอร์ในโฟลเดอร์หลักขณะที่bower_componentsอยู่ภายในแอพโฟลเดอร์


ผลลัพธ์ของคุณคืออะไรและผลลัพธ์ที่คาดหวังของคุณคืออะไร
DEN

คุณต้องการยกเว้นไดเรกทอรีย่อยทั้งหมดหรือบางส่วนเท่านั้น
Sergiy Kolodyazhnyy

คำตอบ:


36

ฉันแค่คาดเดาสิ่งที่คุณต้องการ

-x ".*"

ยกเว้นไฟล์ทั้งหมดที่ขึ้นต้นด้วยจุด

ทำเช่น:

-x .\*

ยกเว้นไฟล์ทั้งหมด (ที่มีจุดในชื่อไฟล์)

ทำเช่น:

-x \*.\*

-

-x "app/bower_components" -x "node_modules"

ยกเว้นไดเรกทอรีนี้และไฟล์ทั้งหมดในนั้น

ทำเช่น:

-x app/bower_components/\* -x node_modules/\*

-

-x "*.zip"

ไม่รวมไฟล์ซิปทั้งหมด

ทำเช่น:

-x \*.zip

คุณแยก node_modules สองครั้ง


2
ขอบคุณฉันได้รับมันใช้โพสต์ต่าง ๆ มาถึงที่: zip -r * app / * -x \ app / bower_components / * -x \ node_modules / * -x * .zip
arpho

@arpho ความคิดเห็นของคุณดังกล่าวข้างต้นควรจะเป็นคำตอบตามที่ปรากฏที่จะทำงานสำหรับฉัน ...
chesedo

7

สิ่งนี้ควรทำเคล็ดลับ:

zip -r zipped.zip dir1/ -x */\.* *.git* \.* *.zip *.csv *.json *.rb *.bak *.swp *.back *.merge *.txt *.sh dir1/node_modules/**\* dir1/bower_components/**\* dir1/dist/**.*

โดยที่ต่อไปนี้-xเป็นรายการของไดเรกทอรีและประเภทไฟล์ (นามสกุล) ที่จะแยกออก


ตอนนี้ฉันรู้แล้วว่า**\*มันคือการแยกแบบเรียกซ้ำ ขอบคุณมาก.
Duc Tran

6

สมมติว่าไดเรกทอรีของคุณเป็นพื้นที่เก็บข้อมูลคอมไพล์ (และตัดสินโดยคำถามก็น่าจะเป็น) คุณสามารถเพิ่มไดเรกทอรีที่คุณต้องการที่จะแยก.gitignoreไฟล์และใช้git archiveคำสั่งเพื่อซิปเนื้อหาของไดเรกทอรีของคุณ:

git archive --format=zip HEAD -o zipfile.zip

ในตัวอย่างของคุณ.gitignoreไฟล์จะต้องมีลักษณะดังนี้:

node_modules
app/bower_components

3

มันใช้งานได้ดีกับฉันใน Ubuntu 16.04:

sudo zip -r /home/user/backup/$(date +"%Y-%m-%d")/home_user.zip /home/user -x "*backup*" -x "*.cache*" -x "*test*"

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