2009-11-24 33 views

Trả lời

51

Bạn có thể sử dụng gzip *


Lưu ý:

  • này sẽ nén từng file và DELETE bản gốc.
  • Sử dụng -k (--keep) tùy chọn giữ các tệp gốc.
  • Điều này có thể không hoạt động nếu bạn có một số lượng lớn các tập tin do giới hạn của vỏ
  • Để chạy gzip song song see @MarkSetchell's answer below.
2

Hãy thử một vòng lặp

$ for file in *; do gzip "$file"; done 
13

Nếu bạn muốn gzip mỗi tập tin đệ quy, bạn có thể sử dụng tìm đường ống để xargs:

$ find . -type f -print0 | xargs -0r gzip 
+10

Không cần tìm + xarg. Gzip có thể tự xử lý đệ quy: 'gzip -9r .' – Idelic

+2

Như mọi khi,' tìm. -type f -print0 | xargs -0r gzip' là tốt hơn. – musiphil

+1

Đối với tương đương 'gzip *', bạn cũng có thể cần '-maxdepth 1' trong' find'. – musiphil

6

Dễ dàng và câu trả lời rất nhanh mà sẽ sử dụng tất cả các lõi CPU của bạn song song:

parallel gzip ::: * 
+0

Eh, câu trả lời này cần nhiều upvotes hơn! – zx8754

+1

@ zx8754 ** GNU Parallel ** là một công cụ tuyệt vời nên được sử dụng nhiều hơn trong thế giới này, nơi CPU chỉ nhận được nhiều lõi hơn là tốc độ hơn. Có rất nhiều ví dụ mà tất cả chúng ta sẽ làm tốt để dành 10 phút để đọc ... https://www.gnu.org/software/parallel/parallel_tutorial.html –

+0

Biết về song song, nhưng đừng quên sử dụng nó! Ran câu trả lời được chấp nhận sau đó cuộn xuống để xem câu trả lời của bạn ... lưu rất nhiều giờ! Có lẽ một ý tưởng hay để làm cho bình luận của bạn là một bản chỉnh sửa cho câu trả lời của bạn? – zx8754

7

Sau bảy năm, bình luận được đánh giá cao này vẫn chưa có câu trả lời chính thức, vì vậy tôi đang quảng bá nó ngay bây giờ:

gzip -r .

Điều này có hai lợi thế so với câu trả lời hiện được chấp nhận: nó hoạt động đệ quy nếu có bất kỳ thư mục con nào và nó sẽ không bị lỗi từ số Argument list too long nếu số tệp quá lớn.

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