Làm thế nào để gỡ bỏ một kho lưu trữ mà không có thư mục gốc, nhưng vẫn giữ hệ thống phân cấp đầy đủ bên trong nó?


25

Nếu tôi có một .tarkho lưu trữ và khi tôi giải nén nó, nó sẽ cho tôi một thư mục foochứa một số nội dung khác, như thế này:

foo/
  something.txt
  another.txt
  bar/
    something-else.txt

Có cách nào để tôi có thể sửa đổi .tarlệnh thành Bỏ qua thư mục gốc ( footrong trường hợp này) và chỉ cần trích xuất tất cả nội dung của thư mục đó trực tiếp vào cwd của tôi như sau:

something.txt
another.txt
bar/
  something-else.txt

Câu trả lời:


29

Dễ dàng. Chỉ cần sử dụng --strip-components=1trên kho lưu trữ như thế này:

tar -xf archive.tar --strip-components=1

Và như được giải thích trong trang chính thức của tarđàn ông:

--strip-thành phần = SỐ

tước số thành phần hàng đầu từ tên tệp trên trích xuất

Với logic là nếu một đường dẫn bao gồm foo/something.txtthì thành phần đầu tiên của LĐ của đường dẫn foo/đó --strip-components=1sẽ có hiệu quả sẽ loại bỏ foo/đường dẫn đó foo/something.txt.

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.