giải nén làm thế nào để cắt thư mục hàng đầu


13

Tôi có một kho lưu trữ zip. Các unzip -l myarchive.ziplệnh đưa ra danh sách này:

top/subtop/files/1.txt
top/subtop/files2/2.txt
etc

Các thư mục gốc là top / subtop cho tất cả các tệp. Làm cách nào để giải nén những tập tin đó mà không có hai thư mục top / subtop?

Ví dụ: khi tôi đang ở trong thư mục / home / myuser / public_html files/1.txtfiles2/2.txtsẽ được trích xuất trực tiếp vào thư mục đó.

Tôi đã thử unzip myarchive.zip top/subtop/*nhưng nó vẫn tạo các thư mục top / subtop.

Câu trả lời:


8

Thật không may, bạn không thể. Lựa chọn thực sự duy nhất của bạn là chỉ di chuyển chúng sau khi chúng được giải nén.


Hmm, tốt để biết. Tôi đã hỏi điều này bởi vì vài ngày trước, khi tạo một kho lưu trữ, nó đã thêm một số đường dẫn từ phía trên, vô tình. Vì vậy, có một vấn đề giải nén chúng vì các đường dẫn hàng đầu bổ sung. Tuy nhiên, tôi không thể lặp lại điều này ngày hôm nay - hôm nay nó hoạt động tốt, tức là khi trong thư mục top / subtop và thực hiện các tệp zip -r.zip * thì không không thêm đường dẫn top / subtop làm tiền tố vào đường dẫn tệp. Tôi nghĩ rằng tôi thực hiện chính xác cùng một lệnh, nhưng kỳ lạ là, kết quả khác nhau, vì vậy không cần thiết phải loại bỏ các thư mục hàng đầu khi giải nén.
camcam

Lưu ý rằng có thể bỏ qua tất cả các thư mục (chỉ cần đặt tất cả các tệp cạnh nhau) với unzip -j.
Skylar Ittner

4

Bạn có thể muốn thử tarlệnh, có một --strip-componentstính năng và có thể hoạt động trên các tệp zip.


2
Không hoạt động với tar (GNU tar) 1.15.1:tar: This does not look like a tar archive tar: Error exit delayed from previous errors
Kevin Panko

2
Tar của FreeBSD có thể xử lý tài liệu lưu trữ ZIP. Thật không may, các triển khai tar khác không đầy đủ tính năng.
Mikhail T.

1
Đối với người dùng debian, tar của FreeBSD có sẵn dưới dạng bsdtar (apt-get install bsdtar) nếu bạn muốn sử dụng tar để giải nén các tệp zip.
Niklas B

0

Tôi đã sử dụng lệnh này để sao chép tất cả các tệp vào thư mục tệp gốc của mình sau khi giải nén tất cả các tệp được nén, nó hoạt động rất tốt. Tiết kiệm thời gian lớn:

for /r %f in (00P*) do @copy "%f" 

( http://mlichtenberg.wordpress.com/2011/01/11/command-line-fun-how-to-flatten-a-folder-hierarchy/ )


5
Bạn có nhận ra đây là một lệnh DOS và không liên quan gì đến một dòng lệnh Linux, phải không?
MestreLion

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.