Se o seu pax suportar a opção -0 , com zsh :
print -rN dir/**/*(D/e:'reply=($REPLY/*(ND^/[1,10]))':) |
pax -w0 | xz > file.tar.xz
Inclui os 10 primeiros arquivos que não são de diretório de cada diretório da lista, classificados por nome de arquivo. Você pode escolher uma ordem de classificação diferente, adicionando o qualificador om glob (ordem por tempo de modificação, Om para reverter a ordem), oL (ordem por tamanho), non (classificar por nome, mas numericamente). ..
Se você não tem o comando padrão pax , ou ele não suporta -0 , mas você tem o comando GNU tar , você pode fazer:
print -rN -- dir/**/*(D/e:'reply=($REPLY/*(ND^/[1,10]))':) |
tar --null -T - -cjf file.tar.xz
Se você não pode usar zsh , mas tem acesso a bash (o shell do projeto GNU), você poderia fazer:
find dir -type d -exec bash -O nullglob -O dotglob -c '
for dir do
set -- "$dir/*"; n=0
for file do
if [ ! -d "$file" ] || [ -L "$file" ]; then
printf "%sprint -rN dir/**/*(D/e:'reply=($REPLY/*(ND^/[1,10]))':) |
pax -w0 | xz > file.tar.xz
" "$file"
(( n++ < 10 )) || break
fi
done
done' bash {} + | pax -0w | xz > file.tar.xz
Isso seria significativamente menos eficiente.