2012-03-14 36 views
15

Tôi đang cố gắng tạo tệp zip và muốn giữ lại hầu hết cấu trúc thư mục, nhưng không phải rootdir như được xác định từ dòng lệnh. Lệnh tôi đang sử dụng là:Cách tạo tệp zip không có toàn bộ cấu trúc thư mục

zip -r out.zip /foo/bar/ 

Tôi muốn nó recurse qua thanh và thêm tất cả các tệp có cấu trúc thư mục được lưu trữ (có sẵn). Tuy nhiên tôi không muốn 'foo' trở thành thư mục cấp cao nhất trong tệp zip được tạo. Tôi muốn thanh là thư mục cấp cao nhất.

Có cách nào dễ dàng để thực hiện việc này không? Tôi nhận ra tôi có thể thay đổi thư mục trước khi nén để tránh vấn đề, nhưng tôi đang tìm một giải pháp không yêu cầu điều này.

Trả lời

8

Tôi không tin zip có cách để loại trừ thư mục cấp cao nhất. Tôi nghĩ rằng đặt cược tốt nhất của bạn sẽ là làm một cái gì đó như: pushd/foo; zip -r out.zip ./bar; popd;

Nhưng đây chính là loại câu trả lời bạn nói bạn không muốn.

+2

Tôi nghi ngờ 'tar -C/foo/bar -c out.tar *' làm cho anh ta hạnh phúc hơn. –

+1

Tôi làm điều này. Tôi đang trên một mac và cần zip và không tar.gz. pushd có vẻ như một lựa chọn thực sự tốt. – slott

8

này nên làm điều đó:

cd /foo/bar/ 
zip -r ../out.zip * 

Kho lưu trữ sẽ được ở /foo/out.zip

+1

OP cho biết anh ta không muốn thay đổi thư mục. – Amala

+0

Câu trả lời này thực hiện chính xác những gì OP muốn. Có lẽ là câu trả lời được chấp nhận. – Jason

+0

Tôi đang chạy zip trong tập lệnh PHP. Giờ thì sao? –

-1

Nếu ai đó tình cờ gặp và cũng không hài lòng với các giải pháp trên, ở đây sau một rất đơn giản workaround để không zip thư mục con dài. Nó liên quan đến việc tạm thời tạo ra một thư mục trong C: /, và sau khi nén chỉ cần xóa nó:

ZipFiles <- list.files(".../ZipFiles") # Insert your long subdirectory into .../ 

dir.create("C:/ZipFiles") 
dir.create(".../FolderToBeZipped") 
file.copy(from = ZipFiles,to = "C:/ZipFiles") 
zip(".../FolderToBeZipped", 
    files = "C:/ZipFiles") 
unlink("C:/ZipFiles",recursive = TRUE) 

Kết quả sau đó là .../FolderToBeZipped.zip/ZipFiles/

Lợi ích là bạn không cần nằm trong thư mục con (hoặc dự án) khi thực thi mã.

Các vấn đề liên quan