Bạn có thể sử dụng GNU song song để làm điều đó vì nó có thể giới hạn số lượng phần tử cho một công việc cũng như cung cấp số công việc (cho một tên lưu trữ zip duy nhất):
$ touch $(seq 20)
$ find . ! -name "*.zip" -type f -print0 | parallel -0 -N 5 zip arch{#} {}
adding: 1 (stored 0%)
adding: 10 (stored 0%)
adding: 11 (stored 0%)
adding: 12 (stored 0%)
adding: 13 (stored 0%)
adding: 14 (stored 0%)
adding: 15 (stored 0%)
adding: 16 (stored 0%)
adding: 17 (stored 0%)
adding: 18 (stored 0%)
adding: 19 (stored 0%)
adding: 2 (stored 0%)
adding: 20 (stored 0%)
adding: 3 (stored 0%)
adding: 4 (stored 0%)
adding: 5 (stored 0%)
adding: 6 (stored 0%)
adding: 7 (stored 0%)
adding: 8 (stored 0%)
adding: 9 (stored 0%)
$ ls
1 11 13 15 17 19 20 4 6 8 arch1.zip arch3.zip
10 12 14 16 18 2 3 5 7 9 arch2.zip arch4.zip
Tùy chọn -N 5
giới hạn số lượng tệp là 5 trên mỗi tệp lưu trữ và được trình bày zip
thay cho{}
{#}
( Nguyên văn, không được thay thế bởi bạn trong khi gọi), được thay thế bằng số công việc, dẫn đến arch1.zip
, arch2.zip
v.v.
Các -print0
tùy chọn để find
và -0
tùy chọn để parallel
song song chắc chắn rằng tên tập tin với các nhân vật đặc biệt được xử lý một cách chính xác.