Các vấn đề cơ bản về loại trừ tệp khi tạo tệp lưu trữ zip được tập trung xung quanh -x
cờ, được sử dụng để loại trừ các tệp khỏi kho lưu trữ khớp với tên hoặc mẫu cụ thể. Ở mức cơ bản nhất, nó sẽ trông như thế này:
zip archive.zip files -x "ExcludeMe"
Có nghĩa là bạn có thể loại trừ một tệp duy nhất, giả sử nó có tên là N Nanksanks.jpg.
zip archive.zip images/ -x "Nothanks.jpg"
Chúng ta hãy bao gồm một vài ví dụ cụ thể trong đó điều này hữu ích.
Loại trừ các tệp .DS_Store khỏi Lưu trữ Zip
Điều này sẽ ngăn các .DS_Store
tệp siêu dữ liệu Mac vô hình điển hình được đưa vào kho lưu trữ zip, được gói theo mặc định:
zip -r archivename.zip archivedirectory -x "*.DS_Store"
Tuy nhiên, nếu thư mục bao gồm các thư mục con, bạn cũng sẽ muốn sử dụng một biến thể khác của lệnh đó để loại trừ các tệp ds_store khỏi các thư mục con:
zip -r archive.zip directory -x "*/\.DS_Store"
Lưu ý: không phải tất cả các shell đều yêu cầu các trích dẫn để lệnh này hoạt động chính xác, nhưng trong bash shell (mặc định cho OS X), bạn sẽ cần sử dụng các trích dẫn để loại trừ với các ký tự đại diện và các mẫu.
Loại trừ các loại tệp cụ thể khỏi Lưu trữ Zip
Với các ký tự đại diện, bạn cũng có thể loại trừ tất cả các tệp thuộc một loại nhất định bằng cách tập trung vào tiện ích mở rộng. Ví dụ: lệnh này sẽ nén toàn bộ thư mục, trừ mọi .jpg
tệp:
zip -r archive.zip directory -x "*.jpg"
Điều đó có thể được sửa đổi cho bất kỳ phần mở rộng tệp cụ thể hoặc mẫu phù hợp trong một tên tệp.
Loại trừ thư mục .git hoặc .svn khỏi Lưu trữ Zip
Zip một thư mục, trừ .git
và nội dung của nó:
zip -r zipdir.zip directorytozip -x "*.git*"
Zip một thư mục, không bao gồm .svn
thư mục:
zip -r zipped.zip directory -x "*.svn*"
Loại trừ tất cả các tệp ẩn khỏi Lưu trữ Zip
Vì các mẫu và ký tự đại diện có thể được sử dụng, bạn cũng có thể loại trừ bất kỳ hoặc tất cả các tệp và thư mục vô hình được tạo ra bằng cách được thêm tiền tố vào một khoảng thời gian, cho dù đó là một thư mục như .svn
hoặc một tệp riêng lẻ như .bash_profile
hoặc .htaccess
.
zip -r archivename.zip directorytozip -x "*.*"
Hoặc để loại trừ tất cả các tệp vô hình khỏi tất cả các thư mục con:
zip -r archive.zip directory -x "*/\.*"
find community-chess/ -path '*/.*' -prune -o -type f -print | zip ~/community-chess.zip -@
) dài hơn dự kiến, nhưng nó hoạt động tốt. Các thư mục con cũng được bao gồm, vì vậy +1 và câu trả lời được chấp nhận :-)