Để trích xuất một thư mục cụ thể (và nội dung của nó, theo cách đệ quy), chỉ cần chuyển nó dưới dạng một đối số phụ trên dòng lệnh. Với GNU tar , bạn có thể loại bỏ một thư mục hàng đầu với --strip-components
tùy chọn (và thường biến đổi tên tệp bằng --transform
). Trên các hệ thống không phải là Linux, bạn có thể sử dụng pax (trong POSIX, nhưng một số bản phân phối Linux bỏ qua phần cài đặt mặc định của chúng) và -s
tùy chọn của nó .
tar xf foo.tar --strip-components=1 wordpress/wp-includes #GNU tar
pax -r <foo.tar -pp -s '!^wordpress/!!' wordpress/wp-includes
Bạn có thể hợp nhất danh sách bao gồm các quy tắc viết lại bằng cách nối thêm quy tắc để viết lại mọi thứ vào tên trống (có nghĩa là không được trích xuất ra; quy tắc chỉ áp dụng nếu các quy tắc trước đó không khớp).
pax -r <foo.tar -pp -s '!^wordpress/\(wp-includes/\)!\1!' -s !.*!!