Giải nén tệp được nén trong .txz và .tar bằng một lệnh


13

Tôi có một tệp được nén trong * .txz. Sau khi giải nén nó tôi nhận được một tệp * .tar. Có cách nào để giải nén nó hai lần với một lệnh không? Ý tôi là giải nén tập tin (* .tar) .txz bằng một lệnh?

Để biết tôi đang làm như thế này:

xz -d file.txz
tar xvf file.tar

Nhưng tôi tự hỏi nếu có cách đẹp hơn.

Câu trả lời:


18
xz -d < file.tar.xz | tar xvf -

Điều đó giống như với bất kỳ kho lưu trữ nén. Bạn không bao giờ phải tạo một bản sao không nén của tệp gốc.

Một số tartriển khai như các phiên bản gần đây của GNU tarcó các tùy chọn dựng sẵn để tự gọi xz.

Với GNU tarhoặc bsdtar:

tar Jxvf file.tar.xz

Mặc dù, nếu bạn đã có một phiên bản có -J, rất có thể nó sẽ xztự động phát hiện các tệp, vì vậy:

tar xvf file.tar.xz

sẽ đủ.

Nếu GNU hoặc BSD của bạn tarlà quá già để hỗ trợ xzđặc biệt, bạn có thể sử dụng các --use-compress-programtùy chọn:

tar --use-compress-program=xz -xvf file.tar.gz

Một trong những lợi thế của việc targọi tiện ích máy nén là nó có thể báo cáo sự cố của nó trong trạng thái thoát.

Lưu ý: nếu tar.xzkho lưu trữ đã được tạo pixz, pixzcó thể đã thêm một tarchỉ mục vào nó, cho phép trích xuất các tệp riêng lẻ mà không phải giải nén toàn bộ kho lưu trữ:

pixz -x path/to/file/in/archive < file.tar.xz | tar xvf -

Tôi phải sử dụng cái này: tar --use-compression-program = xz -xvf file.tar.gz Cảm ơn!
Paweł Jaworowski


4

Giải nén có lẽ không phải là thuật ngữ đúng. Bạn có thể giải nén bằng xztar với tar.

Trang hướng dẫn cho GNU tar( man tar, GNU tar là mặc định trên Debian) chỉ định rằng bạn có thể sử dụng:

-I, --use-compress-program PROG
      filter through PROG (must accept -d)

xzhỗ trợ -dtùy chọn, vì vậy bạn có thể sử dụng:

tar --use-compress-program xz xvf file.txz 

Những gì ít rõ ràng hơn từ trang người đàn ông đó là -xz-Jlà tốc ký cho --use-compress-program xzhoặc -I xz.

Và điều không được chỉ định ở trang man là bạn có thể làm

tar xvf file.txz 

trong GNU tar và nó sẽ nhận ra tệp tar là được nén với xz.

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.