Câu hỏi Bất kỳ phương pháp để nén hàng loạt nhiều tập tin?


Có ai biết có bao nhiêu tệp có thể được GZIP nén không?
Tôi có rất nhiều tệp trong một thư mục và tôi cần nén chúng riêng lẻ.

Trên thực tế, tôi đã tìm thấy một cách để làm điều đó. GZIP dòng lệnh nhị phân thực hiện công việc.

Tôi đã sử dụng gzip -r dir.

Cảm ơn những nỗ lực của bạn.


4
2018-02-10 20:13


gốc


Hệ điều hành nào? - Karolos
Win7, xin lỗi :) - avetarman
@avetarman, Vui lòng thêm những gì bạn đã làm như một câu trả lời, và chấp nhận nó, thay vì chỉ đặt câu trả lời trong câu hỏi - soandos


Các câu trả lời:


Chỉ cần sử dụng gzip một mình.

theo mặc định, gzip sẽ lấy bất kỳ tệp nào được truyền vào nó và nén nó và thêm phần mở rộng .gz. I E.

gzip dir/* -r

sẽ gzip mọi tệp trong dir / * (và các thư mục con).


2
2018-02-10 21:31





Hãy thử những điều sau đây trong PowerShell (sau khi đi đến thư mục chính xác):

$files = get-childitem
foreach ($file in $files) {gzip $file}

Điều đó sẽ đi qua tất cả các tệp trong thư mục và nén tất cả chúng.

Chỉnh sửa: Nếu bạn muốn thực hiện tất cả các tệp trong cây thư mục (tức là trong một thư mục và tất cả các thư mục con của nó), chỉ cần thay đổi $files = get-childitem  đến $files = get-childitem -recurse 


4
2018-02-10 20:32



Điều này có thể được mở rộng cho bất kỳ tiện ích nén có khả năng CLI nào, bao gồm cả 7zip. - music2myear
Yup. Đẹp và thích nghi theo cách đó. (trên một lưu ý không liên quan, khi bạn chỉnh sửa liên kết, hãy kiểm tra chúng trước tiên vì tôi đã thấy một số dấu ngoặc đơn bị bỏ lỡ trên một số chỉnh sửa của bạn. Không phải là một vấn đề lớn, nhưng tôi nghĩ bạn nên biết) - soandos
Thx cho người đứng đầu lên. - music2myear


Tôi sẽ sử dụng for vòng lặp. Bạn có lo ngại rằng tệp thực thi sẽ được tải nhiều lần không? Điều đó không nên nhiều, so với thời gian thực hiện để nén.


3
2018-02-10 20:33



Có lẽ cung cấp mã sẽ làm điều này? - soandos


GZIP có thể được sử dụng để nén các tệp riêng lẻ ... nhưng hầu hết thời gian bạn sẽ thấy số tiền tiết kiệm không gian đĩa tối thiểu. Các tệp chiếm 1 sector sẽ tiêu thụ toàn bộ không gian đĩa 1-sector, ngay cả khi tệp nhỏ hơn kích thước của sector. (tức là sector-size = 16kb, file là 8kb ... 'compressed' là 5kb ... vẫn chiếm 16kb "disk-space") Sức mạnh của gzip hiển nhiên hơn nhiều khi bạn kết hợp tất cả các file thành một duy nhất tập tin (sử dụng tar thường) và sau đó nén các kho lưu trữ số ít. (kết hợp, "lưu trữ" có thể lấy tất cả các tệp và kết hợp chúng thành 1 tệp đơn lẻ trên đĩa ... sẽ có ít "khoảng trống hơn" giữa các phần)

Ví dụ:

tar -czf compressed_archive.tgz folder/*

tar -c tạo một kho lưu trữ, z sử dụng nén gzip và f ghi kết quả vào một tệp gọi là compressed_archive.tgz. Bạn cũng có thể chuyển sang sử dụng nén bz2 (hoạt động tốt hơn trong nhiều trường hợp) bằng cách đơn giản là chuyển đổi z chuyển sang một j.

Nếu bạn muốn sau đó trích xuất các tệp từ kho lưu trữ, bạn có thể chỉ cần làm ngược lại

tar -zxf compressed_archive.tgz

mà sẽ x trích xuất các tệp đã z gzip'd, f từ tệp lưu trữ có tên là compressed_archive.tgz.


2
2018-02-10 20:46



Cảm ơn. Tôi không cần một kho lưu trữ. Tôi đang tìm kiếm nén các tập tin đệ quy. Nó dành cho một sơ đồ trang web. Cảm ơn một lần nữa. - avetarman


Sử dụng 7-Zip để nén tốt hơn


1
2018-02-10 20:26



Cảm ơn, nhưng nó chỉ làm cho một kho lưu trữ nén. Nó không xử lý các tệp riêng lẻ. - avetarman
Siva không phải là câu trả lời cho câu hỏi. Đó là một tuyên bố của một thực tế thực sự. Một thực tế không liên quan - Lyndon White


Tôi tìm thấy tôi đã phải thích ứng với phương pháp soandos powershell để có được điều này để làm việc như mong đợi (tôi sẽ có thêm bình luận, nhưng không được phép).

$files = get-childitem -recurse | % { $_.FullName }
foreach ($file in $files) {gzip $file}

1
2017-08-26 15:42