Nén đệ quy các tệp trong thư mục và thư mục con bằng cách sử dụng dòng lệnh Công cụ mã zip zip trong Mac OS X và loại trừ các tệp .DS_Store khỏi TẤT CẢ các thư mục con


10

Tôi đang cố gắng tạo tệp ZIP bằng zipcông cụ dòng lệnh đi kèm với Mac OS X Terminal. Tôi muốn nén đệ quy nội dung của thư mục hiện tại nhưng không bao gồm .DS_Storecác tệp. Tôi đang cố gắng với điều này:

zip -r myarchive.zip . -x .DS_Store

Loại -x .DS_Storetrừ .DS_Storetệp trong thư mục hiện tại, nhưng không có trong các thư mục con được thêm đệ quy. Làm cách nào để loại trừ tất cả các .DS_Storetệp khỏi TẤT CẢ các thư mục con?

Câu trả lời:


17

Thêm ký tự đại diện vào tùy chọn loại trừ

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

Cảm ơn câu trả lời của bạn. Nó hoạt động, nhưng, tại sao? :). Bạn có thể vui lòng giải thích?
OMA

Việc *mở rộng thành không có gì hoặc bất kỳ phần nào của đường dẫn khi zip nén đệ quy các tệp và thư mục của chúng. Vì vậy, ./.DS_Storesau đó ./*/.DS_Storevà như vậy được loại trừ khỏi kho lưu trữ.
fd0

À, thật thú vị. Vì vậy, ký tự đại diện hoạt động khác với trong thế giới Windows, trong đó "* .DS_Store" chỉ có nghĩa là "bất kỳ tệp nào kết thúc bằng .DS_Store"
OMA

1

Hầu hết các lần tôi muốn loại trừ tất cả các tệp bị ẩn, chẳng hạn như .DS_Storehoặc .githoặc.gitignore

Với một lệnh đơn giản, bạn có thể xử lý tất cả các lệnh đó và nén tất cả các tệp và thư mục con theo cách đệ quy

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

Hoặc thậm chí tốt hơn, tạo một hàm trong zsh để làm cho cuộc sống dễ dàng hơn

open ~/.zshrc

Thêm mã sau vào phần bí danh của bạn

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

Tải lại cấu hình zsh

source ~/.zshrc

Sử dụng như thế này

zip-visible archive.zip folder

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.