Tôi đang cố gắng thêm các tập tin đã giải nén vào một thư mục đã được nén new folder.zip
. Có thể sử dụng zip -r new folder.zip
sau khi thêm một số tệp được giải nén vào chúng? Lệnh này sẽ nén thư mục? Có sự thay thế nào để làm điều này?
Tôi đang cố gắng thêm các tập tin đã giải nén vào một thư mục đã được nén new folder.zip
. Có thể sử dụng zip -r new folder.zip
sau khi thêm một số tệp được giải nén vào chúng? Lệnh này sẽ nén thư mục? Có sự thay thế nào để làm điều này?
Câu trả lời:
Sử dụng cờ cập nhật: -u
Thí dụ:
zip -ur existing.zip myFolder
Lệnh này sẽ nén và thêm myFolder
(và nội dung của nó) vào existing.zip
.
Sử dụng nâng cao:
Cờ cập nhật thực sự so sánh các tệp đến với các tệp hiện có và sẽ thêm các tệp mới hoặc cập nhật các tệp hiện có.
Do đó, nếu bạn muốn thêm / cập nhật thư mục con cụ thể trong tệp zip, chỉ cần cập nhật nguồn theo ý muốn, sau đó nén lại toàn bộ nguồn bằng -u
cờ. Chỉ các tập tin thay đổi sẽ được nén.
Nếu bạn không có quyền truy cập vào các tệp nguồn, bạn có thể giải nén tệp zip, sau đó cập nhật các tệp mong muốn và sau đó nén lại bằng -u
cờ. Một lần nữa, chỉ các tệp đã thay đổi sẽ được nén.
Thí dụ:
Cấu trúc nguồn gốc
ParentDir
├── file1.txt
├── file2.txt
├── ChildDir
│ ├── file3.txt
│ ├── Logs
│ │ ├── logs1.txt
│ │ ├── logs2.txt
│ │ ├── logs3.txt
Cấu trúc nguồn cập nhật
ParentDir
├── file1.txt
├── file2.txt
├── ChildDir
│ ├── file3.txt
│ ├── Logs
│ │ ├── logs1.txt
│ │ ├── logs2.txt
│ │ ├── logs3.txt
│ │ ├── logs4.txt <-- NEW FILE
Sử dụng
$ zip -ur existing.zip ParentDir
> updating: ParentDir/ChildDir/Logs (stored 0%)
> adding: ParentDir/ChildDir/Logs/logs4.txt (stored 96%)
Tôi tin rằng bạn có thể thêm tệp bằng lệnh này:
zip -r zipfile.zip newfile.txt newfile1.txt
Các -r
tùy chọn của lệnh zip cho phép bạn thêm các tập tin.
-r
là tùy chọn đệ quy.
-r
Có thể được sử dụng nếu thêm thư mục hoặc khi không thêm thư mục. Bất cứ lúc nào bạn không muốn chỉ thêm thư mục và không có nội dung, thì hầu như mọi lúc Vì vậy, trong ngắn hạn, ví dụ là đúng, nhưng giải thích là sai.) (Tốt nhất để kiểm tra nó, đây chỉ là cách giải thích của tôi về hướng dẫn).
Cờ -u hoạt động cho các tệp để
zip -ur zip_to_upload.zip file_to_add.txt
Trân trọng
Tôi đã sử dụng thành công zip
lệnh. với tùy chọn grow (-g), để thêm thư mục con folder1/folder2
chứa các tệp fileA.txt
và fileB.txt
:
zip -gr folder.zip folder1/folder2
-r
phương tiện recurse dir.
Theo hiểu biết của tôi -g nên phát triển các tệp zip, không tạo tệp zip mới (có thể hữu ích với kho lưu trữ zip rất lớn). Trong trường hợp có vấn đề, trước tiên bạn có thể thử tạo các thư mục con trong thư mục.zip với (vd):
zip -g folder.zip folder1
zip -g folder.zip folder2
Nếu bạn có nhiều tệp ở cùng một nơi với kho lưu trữ zip của bạn và bạn muốn sao chép tất cả chúng vào kho lưu trữ, bạn có thể làm:
zip -ur zipfile.zip !(zipfile.zip)
Điều này cập nhật tệp zip của bạn ( -u
tùy chọn) theo cách đệ quy ( -r
tùy chọn) với tất cả các tệp được tìm thấy ngoại trừ chính tệp zip ( !
là phủ định của tệp zip)
Sau đó, bạn có thể chỉ cần xóa tất cả các tệp ngoại trừ tệp zip theo cùng một quy tắc ở trên:
rm !(zipfile.zip)