Você não pode com bash . A especificação POSIX do utilitário printf também não a suporta. Você teria que reordenar os argumentos manualmente.
Os integrantes printf (ou print -f ) de ksh93 e zsh oferecem suporte a eles:
$ printf '%2$s%1$s\n' a b
ba
O GNU awk ou perl também é compatível, portanto, se você tiver algum desses instalados, em bash , você poderá redefinir printf como uma função como:
printf() { zsh -c 'printf "$@"' printf "$@"; }