Làm thế nào để loại trừ các thư mục và tập tin nén một thư mục?


32

Tôi, cần phải nén một thư mục không bao gồm một số thư mục con và tập tin; Tôi đã sử dụng điều này:

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

không có thành công nào; node_moduleslà một thư mục trong thư mục chính trong khi bower_componentsnằm trong ứng dụng thư mục


kết quả của bạn là gì và kết quả mong đợi của bạn là gì?
DEN

Bạn muốn loại trừ tất cả các thư mục con hoặc chỉ một số trong số họ?
Sergiy Kolodyazhnyy

Câu trả lời:


36

Tôi chỉ đơn giản là đoán những gì bạn muốn.

-x ".*"

loại trừ tất cả các tệp bắt đầu bằng dấu chấm

làm như thế:

-x .\*

loại trừ tất cả các tệp (có một dấu chấm trong tên tệp)

làm như thế:

-x \*.\*

-

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

loại trừ thư mục này và tất cả các tệp trong đó

làm như thế:

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

-

-x "*.zip"

loại trừ tất cả các tệp zip

làm như thế:

-x \*.zip

Bạn loại trừ node_modules hai lần


2
nhờ tôi đã nhận nó, sử dụng bài khác nhau đến với: zip -r * app / * -x \ app / bower_components / * -x \ node_modules / * -x * .zip
arpho

@arpho Nhận xét của bạn ở trên phải là một câu trả lời vì nó dường như đang hoạt động với tôi ...
chesedo

7

Một cái gì đó như thế này nên thực hiện các mẹo:

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/**.*

Trong đó sau đây -xlà danh sách các loại thư mục và tệp (phần mở rộng) để loại trừ.


Bây giờ tôi biết **\*là để loại trừ đệ quy. Cảm ơn nhiều.
Đức Trần

6

Giả sử thư mục của bạn là một kho lưu trữ git (và đánh giá bằng câu hỏi, rất có thể là vậy), bạn có thể thêm các thư mục mà bạn muốn loại trừ vào .gitignoretệp và sử dụng git archivelệnh để nén nội dung của thư mục của bạn:

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

Trong ví dụ của bạn, .gitignoretệp sẽ phải trông như thế này:

node_modules
app/bower_components

3

Điều này hoạt động hoàn hảo đối với tôi trên Ubuntu 16.04:

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

0

trong mọi dự án đều bỏ qua node_modules như thế này:

for i in */; do zip -r "${i%/}.zip" "$i" -x "*/\node_modules/*" ; done
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.