Bỏ một thư mục specifc trong tar.gz


8

Làm cách nào để giải nén / giải nén một thư mục cụ thể trong tar.gz bằng cách sử dụng terminal / dòng lệnh ( Ubuntu 14.04 (Trusty Tahr))?

Tóm lược:

-file.tar.gz
 -- folder1
 -- folder2

Cách giải nén ...

... folder1 -->  ~/locationX
... folder2 --> ~/locationY

Tôi có thể làm cái này như thế nào?

Xin lưu ý: Điều này hoàn toàn liên quan đến thiết bị đầu cuối / dòng lệnh và không phải là rối . Đây chỉ là một ví dụ - tôi sẽ lưu khoảng 50 bước bổ sung trong Puppet, nếu có lệnh giải nén một thư mục cụ thể từ bên trong tar.gzvì tôi có thể tránh di chuyển các tệp xung quanh ...

Câu trả lời:


15

Tôi nghĩ rằng điều này nên làm điều đó:

tar -xzf file.tar.gz -C ~/locationX folder1 -C ~/locationY folder2

Các -Cphương tiện tùy chọn để thay đổi thư mục chỉ định trước khi thực hiện quá trình chiết. Chỉ định đối số tên tệp sau tên tarfile giới hạn trích xuất chỉ các tệp hoặc thư mục đó. Và bạn có thể lặp lại -Cthư mục treo này như bạn làm.

Lưu ý rằng điều này sẽ thực hiện trích xuất trong thư mục con: folder1sẽ đi vào ~/locationX/folder1, folder2sẽ đi vào ~/locationY/folder2. Bạn có thể ngăn chặn điều này bằng cách sử dụng --strip-componentstùy chọn:

tar -xzf file.tar.gz -C ~/locationX --strip-components=1 folder1 \
                     -C ~/locationY --strip-components=1 folder2

Ngoài ra, nếu các tiền tố thực tế trong tệp tar là ./folder1./folder2, rất có thể nếu bạn đã tạo tệp tar với tar -czf file.tar.gz ., bạn sẽ cần bao gồm ./tiền tố trong các đối số tên tệp và thay đổi thành --strip-components=2.


tuyệt vời! Ngoài việc bạn đã giải quyết được câu hỏi tôi có, tôi có thể nhớ khi tôi nhận được câu trả lời tư duy như vậy trong bất kỳ diễn đàn nào. Cảm ơn rât nhiều!
thẳng thắn

@frank Có cộng đồng stackexchange cho bạn. Chào mừng bạn
BAR

Và tôi nghĩ xkcd.com/1168
iceman
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.