Làm cách nào để tạo các thư mục trong tệp zip liên quan đến thư mục đích thay vì thư mục làm việc của tôi


25

Tôi đang gọi lệnh zip từ một tập lệnh mà tôi không thể thay đổi thư mục. Tôi cần tạo một tệp zip của nội dung trong data/kit123/thư mục chứa dữ liệu, nhưng tôi muốn nội dung của zip chỉ là nội dung của kit123, với các đường dẫn liên quan đến kit123.

Đây là cấu trúc thư mục

myworkingdir
    data
        kit123
            kitpart1
                file.xcf
                anotherfile.xcf
            kitpart2
                ...
        kit124
            ...

Kịch bản của tôi chạy trong myworkdir và không thể thay đổi thư mục.

Nếu tôi gọi

zip -r kit123.zip data/kit123

sau đó cấu trúc trong tệp zip sẽ là

data
    kit123
        kitpart1
            file.xcf
            anotherfile.xcf
        kitpart2

nhưng tôi muốn nó được

kit123
    kitpart1
        file.xcf
        anotherfile.xcf
    kitpart2

Có một tùy chọn zip tôi có thể sử dụng để thực hiện điều này? Có vẻ kỳ lạ là nó nên phụ thuộc vào thư mục làm việc của tôi

Tôi biết nó không -j. cái đó phá hủy cấu trúc trong kit123


Bah, đừng bận tâm, tôi đã tìm ra cách thay đổi dir (bằng Python) Tôi chỉ có một quyền được tổ chức kém. Tôi vẫn muốn biết nếu zip có một tùy chọn như vậy mặc dù.
Nathan

Câu trả lời:


18

Như bạn lưu ý trong các bình luận bây giờ bạn biết cách thay đổi thư mục với tập lệnh của mình, tôi sẽ giải thích tình huống bằng zip liên quan đến các đường dẫn tương đối.

Có lẽ dễ nhất để mở thiết bị đầu cuối và cdđến kit123; bạn phải đặt thư mục đích thành thư mục làm việc của mình - bạn không thể chạy lệnh từ cơ sở của thư mục chính của mình hoặc nó sẽ chọn tất cả các đường dẫn của /home/$USER/..Nếu bạn sử dụng -jtùy chọn, nó sẽ loại bỏ tất cả các đường dẫn, vì không có 'thực sự là một tương đương --stripvới tùy chọn tar mà mức độ loại bỏ đường dẫn khác nhau có thể được chỉ định.

Vì vậy, vui lòng cd vào thư mục đích của bạn ( kit123) và nhập:

zip -r kit123.zip *

Điều này sẽ đệ quy ( -r) bảo toàn tất cả ( *) tệp và thư mục của tệp trong thư mục hiện tại ( kit123) và vì các đường dẫn tương đối ( -p) được bảo toàn tự động trừ khi có -jtùy chọn, cấu trúc thư mục sẽ như bạn muốn. Kit123và các thư mục con ( kitpart1) với các tệp riêng của chúng sẽ có mặt:

kit123
    kitpart1
        file.xcf
        anotherfile.xcf
    kitpart2

Bạn có thể kiểm tra nội dung của tệp zip với unzip -l zipfile.zip.

Để biết thêm thông tin về các tùy chọn khác có sẵn zip, hãy xem man zipvà trang web Ubuntu trực tuyến .

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.