Ant*_*hon 13
您可以使用GNU parallel来执行此操作,因为它可以限制作业的元素数量并提供作业编号(对于唯一的 zip 存档名称):
$ 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
Run Code Online (Sandbox Code Playgroud)
该选项-N 5将每个存档的文件数限制为 5 个,并zip代替{}
该{#}(逐字,而不是被你调用时更换),由工号代替,造成arch1.zip,arch2.zip等等。
该-print0选项find与-0选项parallel串联确保有特殊字符的文件名是正确处理。