Nếu bạn muốn lưu trữ tất cả các tệp trong folder
tên của họ mà không có chỉ dẫn thư mục, bạn có thể sử dụng -j
tùy chọn.
zip -j folder/artifact.zip folder/artifact1.app folder/artifact2.ext2 folder/artifact3.ext3
hoặc là
zip -j folder/{artifact.zip,artifact1.app,artifact2.ext2,artifact3.ext3}
Nếu bạn có tệp trong thư mục con, chúng sẽ không có bất kỳ thành phần thư mục nào trong kho lưu trữ, ví dụ: folder/subdir/foo
sẽ được lưu trữ trong kho lưu trữ dưới dạng foo
.
Nhưng nó có thể sẽ dễ dàng hơn để thay đổi thư mục. Nó gần như chính xác cùng số lượng gõ như phương pháp niềng răng aboe. Nếu bạn làm điều đó, nếu bạn bao gồm các tệp trong thư mục con, chúng sẽ có đường dẫn tương đối từ thư mục bạn đã thay đổi, ví dụ như folder/subdir/foo
sẽ được lưu trữ dưới dạng subdir/foo
.
(cd folder && zip artifact.zip artifact1.app artifact2.ext2 artifact3.ext3)
Để sử dụng tương tác, bạn mất hoàn thành shell theo cách này, vì shell không nhận ra rằng bạn sẽ ở trong một thư mục khác khi bạn chạy zip
lệnh. Để khắc phục điều đó, ban hành cd
lệnh riêng. Để dễ dàng quay lại thư mục trước, bạn có thể sử dụng pushd
và popd
.
pushd folder
zip artifact.zip artifact1.app artifact2.ext2 artifact3.ext3
popd
Nếu bạn muốn kiểm soát hoàn toàn các đường dẫn được lưu trữ trong tệp zip, bạn có thể tạo một rừng các liên kết tượng trưng. Trừ khi được hướng dẫn khác, zip
không lưu trữ các liên kết tượng trưng.
-j
áp dụng và sẽ nén tất cả các thư mục vào một thư mục cấp gốc trong ZIP. Đó không phải là những gì bạn đang tìm kiếm, phải không?