Tạo thư mục đích khi giải nén tarball


25

Có thể tạo thư mục đích, tương tự như mkdir -pnơi tôi có thể xác định thư mục đích không tồn tại trong lệnh tar của mình và tar sẽ tạo thư mục cho tôi không?

Tôi biết tôi có thể chuyển hướng đầu ra đến một thư mục bằng cách sử dụng tar -C /target/dir, nhưng điều này không hoạt động nếu thư mục đích không tồn tại.


4
Nếu không thể, bạn luôn có thể tạo bí danh shell.
n0pe

Câu trả lời:


38
mkdir -p /target/dir && tar -C /target/dir

3
Không cho ăn bằng thìa, thẳng và cho điểm.
Amado Martinez

10
Thay đổi nhỏ được đề xuất:mkdir -p /target/dir && tar -C $_
Mark Melville

@MarkMelville mô tả cho chúng tôi những gì $ _ nên để ở đây
Suhayb

@Suhayb $_là một tham số đặc biệt trong Bash mở rộng đối số cuối cùng cho lệnh trước đó.
ConceptRat

12
tar -xvf bash.html_node.tar.gz --one-top-level

Từ trang man của lệnh tar

--one-top-level[=DIR]

    Trích xuất tất cả các tệp vào DIR , hoặc, nếu được sử dụng mà không có đối số, vào thư mục con được đặt tên theo tên cơ sở của kho lưu trữ (trừ các hậu tố nén tiêu chuẩn có thể nhận ra bởi --auto-compress).

----- kiểm tra

kiểm tra 1

tar zxvf ../aaa.tgz --one-top-level
aaa/
aaa/222
aaa/111

tree aaa
aaa/
├── 111
└── 222

// nếu tên tgz giống với root_dir của kho lưu trữ, không có hiệu ứng nào khác

kiểm tra 2

mv ../aaa.tgz ../bbb.tgz

tar zxvf ../bbb.tgz --one-top-level
aaa/
aaa/222
aaa/111

tree bbb
bbb
└── aaa
    ├── 111
    └── 222

// nếu tên tgz không giống với root_dir của kho lưu trữ, hãy tạo một thư mục cấp cao nhất


3
Yêu cầu GNU tar? Mac bsd tar mặc định không có tùy chọn này.
Curtis Yallop

1
Vâng, điều này nên được đề cập rõ ràng hơn.
kcrisman

5

Điều này có ý nghĩa hơn với tôi: mkdir -p /create/folder && tar -zxf haroopad-v0.13.0_x64.tar.gz -C /create/testfolder

mkdirlàm cho thư mục mặc dù tôi không hiểu lắm về -pchuyển đổi. &&cho phép bạn thực hiện một lệnh thứ hai. Tôi đã sử dụng các công tắc tar điển hình nhưng cuối cùng -Cđược sử dụng để thay đổi thư mục và trích xuất đến vị trí cần thiết.

tài liệu tham khảo: extract-files-chứa-in-archive-tar-gz-to-new-thư mục-tên-archive


2
Công tắc -p sẽ không gây ra lỗi nếu thư mục đã tồn tại.
David

@David nó cũng sẽ tạo ra bất kỳ thư mục không tồn tại hàng đầu nào, tức là nó sẽ tạo /createnếu nó không tồn tại.
Antonio Pérez

1

Nếu bạn không biết các đường dẫn để tạo ...
Lấy các đường dẫn cần thiết từ tệp tar, sau đó tạo chúng ...

for P in \`tar tvf tarfile.tar |tr -s [:space:] |cut -d' ' -f6\`; do  
    C=\`echo "${P: -1}"\`  #get the last character  
    if [ $C = '/' ]; then  
        echo "Found directory: $P"  
        mkdir -p $P  
    fi  
done
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.