Làm cách nào để tạo một kho lưu trữ ZIP chỉ bảo tồn cấu trúc của thư mục đích và bên dưới?


7

Tôi cần tạo một kho lưu trữ zip trong đó kết quả được giải nén sẽ bảo vệ cấu trúc thư mục từ thư mục được chỉ định xuống. Tôi cũng cần phải làm điều này mà không thực sự chuyển sang thư mục.

Câu hỏi của tôi là tương tự đến này . Sau khi đọc rất nhiều về vấn đề này, tôi không cảm thấy rằng bất cứ điều gì đã hoàn toàn trả lời câu hỏi của tôi.

Ví dụ: tôi có:

/ tmp
    / sub_dir
        / pertesy_dir
            / sub_folder_1 /
                thứ.pdf
                thứ.xls
            / sub_folder_2 /
                thứ.pdf
                thứ.xls
            / sub_folder_3 /
                thứ.pdf
                thứ.xls

Tôi cần có khả năng thực hiện zip -r /tmp/sub_dir/pertinent_dir.zip /tmp/sub_dir/pertinent_dir/*sao cho kết quả chỉ chứa pertinent_dirvà bên dưới. Một lần nữa, tôi cần phải làm điều này bất kể bối cảnh thư mục hiện tại của tôi. Tôi đã thử -j, nhưng nó dường như không hoạt động. Có lẽ điều đó là không thể. Có thiếu điều gì không?


1
Bạn có phản đối việc thay đổi thư mục đích trong một subshell và thực hiện zip trong cùng subshell đó không?

Câu trả lời:


7
sh -c "cd /tmp/sub_dir/pertinent_dir/../  \
&& zip -r pertinent_dir.zip pertinent_dir/*"

6

Bạn có thể sử dụng jar thay vì zip:

jar cfM /tmp/sub_dir/pertinent_dir.zip -C /tmp/sub_dir pertinent_dir

2
Có lẽ bạn nên đề cập đến đó jarlà một phần của bản cài đặt Java và tạo các tệp zip tương thích có thể được giải nén bằng giải nén, v.v.
người dùng không xác định
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.