Tôi có một kho lưu trữLàm thế nào để giải nén một tar.gz trong một thư mục
* .tar.gz
Làm thế nào tôi có thể giải nén này trong một thư mục đích?
Tôi có một kho lưu trữLàm thế nào để giải nén một tar.gz trong một thư mục
* .tar.gz
Làm thế nào tôi có thể giải nén này trong một thư mục đích?
gzip -dc archive.tar.gz | tar -xf - -C /destination
hay, với GNU tar
tar xzf archive.tar.gz -C /destination
Tôi thích khái niệm sử dụng 'gzip' trong trường hợp tar không hiểu lưu trữ nén. – Alfe
Bạn có thể sử dụng tùy chọn -C
(hoặc --directory
nếu bạn thích tùy chọn dài) để cung cấp cho các mục đích của sự lựa chọn của bạn trong trường hợp bạn đang sử dụng phiên bản Gnu của tar
. Thư mục nên tồn tại:
mkdir foo
tar -xzf bar.tar.gz -C foo
Nếu bạn không sử dụng một tar
có khả năng giải nén vào một thư mục cụ thể, bạn có thể chỉ đơn giản là cd
vào thư mục mục tiêu của bạn trước khi gọi tar
; sau đó bạn sẽ phải cung cấp cho một con đường hoàn chỉnh để lưu trữ của bạn, tất nhiên. Bạn có thể làm điều này trong một subshell Phạm vi để tránh ảnh hưởng đến kịch bản xung quanh:
mkdir foo
(cd foo; tar -xzf ../bar.tar.gz) # instead of ../ you can use an absolute path as well
Hoặc, nếu không phải là một đường dẫn tuyệt đối hay một đường dẫn tương đối đến tập tin lưu trữ là phù hợp, bạn cũng có thể sử dụng để đặt tên cho các kho lưu trữ bên ngoài của subshell Phạm vi:
TARGET_PATH=a/very/complex/path/which/might/even/be/absolute
mkdir -p "$TARGET_PATH"
(cd "$TARGET_PATH"; tar -xzf -) < bar.tar.gz
chiết xuất myArchive.tar-/destinationDirectory
Commands:
cd /destinationDirectory
pax -rv -f myArchive.tar -s ',^/,,'
Tại sao tất cả các downvotes? Có nhiều tùy chọn hơn chỉ -C (và có thể phiên bản của anh ấy không cung cấp tùy chọn này). – Alfe