Bạn có thể sử dụng tùy chọn -C
(hoặc --directory
nếu bạn thích các tùy chọn dài) để đưa ra thư mục đích bạn chọ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 tar
khả năng trích xuất vào một thư mục cụ thể, bạn có thể chỉ cần cd
vào thư mục đích trước khi gọi tar
; sau đó, bạn sẽ phải đưa ra một đường dẫn đầy đủ đến kho lưu trữ của bạn, tất nhiên. Bạn có thể thực hiện việc này trong một phạm vi con phạm vi để tránh ảnh hưởng đến tập lệnh 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à đường dẫn tuyệt đối cũng không phải là đường dẫn tương đối đến tệp lưu trữ, bạn cũng có thể sử dụng đường dẫn này để đặt tên cho kho lưu trữ bên ngoài phạm vi con 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