Làm thế nào để xác định thư mục đích giải nén


21

Có một tùy chọn trên lệnh zip linux để tôi có thể mã cứng thư mục đích mà nó mở ra. Ví dụ: tôi muốn nén các tệp ./mydir vào myzipfile.zip nhưng tôi muốn lệnh unzip tạo thư mục cụ thể "projx" và mở rộng các tệp nằm dưới ./mydir cho nó.

zip -r myzipfile.zip mydir (-option to expand into 'projx' when unzipped? )

Câu trả lời:


18

Không có tùy chọn như vậy, ít nhất là không cho Info-ZIP. Bạn phải tự tạo một thư mục projx , di chuyển / sao chép các tập tin của bạn vào đó và sau đó chuyển nó đến zip.

Nếu thư mục đã tồn tại sau đó chỉ cần vượt qua tùy chọn -dđể unzipchỉ định thư mục đích để khai thác.


4

Để làm điều đó có một cách khác. Bạn có thể vỗ toàn bộ nội dung của tệp zip bằng phương pháp sau. Thư mục đích là " projx " và thực hiện lệnh sau.

cd /projx && unzip -j /path/to/myzipfile.zip

Tùy chọn -j được gọi là "đường dẫn rác" và chỉ cần bỏ từng tệp vào thư mục hiện tại thay vì trích xuất bất kỳ cấu trúc thư mục nào.


0

Tôi không biết về một tùy chọn dòng lệnh cụ thể, nhưng bạn có thể sử dụng các lệnh sau để đạt được mục tiêu của mình:

ln -s mydir projx
zip -r myzipfile.zip projx
rm projx

Lệnh đầu tiên tạo một liên kết tượng trưng, ​​để bạn có thể truy cập các tệp trong mydirthông qua projx. Sau đó, bằng cách sử dụng Info-ZIP(được thử nghiệm với phiên bản 2.31), liên kết tượng trưng được hủy đăng ký (đây là mặc định, trừ khi bạn chỉ định -y) và các tệp được lưu trữ đệ quy:

adding: projx/ (stored 0%)
adding: projx/foo.1 (deflated 23%)
adding: projx/bar.2 (deflated 73%)
...

Bạn thấy, tên thư mục cũng được lưu trong tệp - vì vậy khi trích xuất thư mục projxđược tạo.

Tuy nhiên, tôi không thể nghĩ đến khả năng lưu trữ các đường dẫn tuyệt đối, nhưng dù sao đây cũng là một ý tưởng tồi.


Đường dẫn tuyệt đối chỉ hoạt động trên MacOS bằng cách chỉ định tùy chọn -jj. Trên các hệ điều hành khác, chỉ có tùy chọn -jđược hỗ trợ (và -jjđược hiểu là -j) loại bỏ bất kỳ đường dẫn nào và do đó dẫn đến điều ngược lại (một thiết kế rất thông minh ...).
scai
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.