tar -tf filename.tar
folder1/file
folder1/name
[...]
Tôi muốn giải nén tập tin và tên vào, thư mục2 . Điều này có thể được thực hiện như là một lót?
tar -tf filename.tar
folder1/file
folder1/name
[...]
Tôi muốn giải nén tập tin và tên vào, thư mục2 . Điều này có thể được thực hiện như là một lót?
Câu trả lời:
Sử dụng -C
và --strip-components
(Xem man tar
).
mkdir FOLDER
# for remote tar file
curl -L ’remote_tar_file' | tar -xz - -C FOLDER --strip-components=1
# for local tar file
tar -xzf FILENAME -C FOLDER --strip-components=1
Các -C
lá cờ giả định một thư mục đã được tại chỗ nên nội dung của file tar có thể được mở rộng sang nó. do đó mkdir FOLDER
.
Các --strip-components
cờ được sử dụng khi một tập tin tar tự nhiên sẽ mở rộng chính nó vào một thư mục, chúng ta hãy nói, như github nơi nó ví dụ để repo-name-master
thư mục. Tất nhiên, bạn sẽ không cần thư mục cấp đầu tiên được tạo ở đây để --strip-components
được đặt thành 1
sẽ tự động xóa thư mục đầu tiên đó cho bạn. Số càng lớn được đặt các thư mục lồng nhau càng sâu được loại bỏ.
Bạn cũng có thể sử dụng --transform
tùy chọn để linh hoạt hơn một chút. Nó chấp nhận bất kỳ hoạt động thay thế sed (s).
Ví dụ, đây là cách tôi trích xuất một tarball Linux sang một thư mục mới để tôi có thể áp dụng một bản vá:
tar -xjf linux-2.6.38.tar.bz2 --transform 's/linux-2.6.38/linux-2.6.38.1/'
man tar
. Không phát hiện ra--strip-components
. một người đẹp