Você pode achar algo parecido com isso um pouco mais simples
zfs list -t snapshot -o name | grep ^tank@Auto | tac | tail -n +16 | xargs -n 1 zfs destroy -r
- exibe a lista de instantâneos (somente nomes) com
zfs list -t snaphot -o name
- filtrar para manter apenas os que correspondem a
tank@Auto
comgrep ^tank@Auto
- inverta a lista (anteriormente classificada de mais antiga para mais recente) com
tac
- limita a saída ao 16º resultado mais antigo e segue com
tail -n +16
- , em seguida, destrua com
xargs -n 1 zfs destroy -vr
excluir instantâneos na ordem inversa é supostamente mais eficiente.
ou classifica em ordem inversa da criação
zfs list -t snapshot -o name -S creation | grep ^tank@Auto | tail -n +16 | xargs -n 1 zfs destroy -vr
Teste com ...|xargs -n 1 echo