Não tenho certeza se segui completamente as regras, mas pode ser mais fácil usar os utilitários padrão (e simplificar as regras para o que e quando criar):
find . -type f | split -d -a3 -l $num --filter='zip -@ $FILE.zip' - "$pfx".
find
é bastante óbvio, ajuste as opções ao seu gosto. Você pode querer classificar a lista antes de passar sua saída para split
.
split
:
-
- d
- use numeração em vez de sufixos alfabéticos -
-a3
- comprimento do sufixo (a numeração) 3 lugares (dígitos neste caso) -
-l
- número de linhas após o qual aumentar o contador -
--filter=COMMAND
- passar linhas para um comando em vez de gravar em um arquivo -
COMMAND
-$FILE
é interpretado porsplit
como um nome de arquivo que normalmente usaria para escrita, o que significa que ele deve estar entre aspas simples (ou barras invertidas para evitar interpretação pelo shell executando a linha de comando acima) -
-
- requer explicitamente a análise da entrada padrão -
"$pfx".
seu prefixo preferido. O ponto é intencional,split
não o anexa automaticamente.