A razão pela qual seu script está falhando é que $9-bkp é tratado como uma expressão: o -bkp também deve ser citado, então a linha deve ser:
ls -lt *.xls | head -10 | awk '{print "mv " $9 " "$9"-bkp"}' | sh
No entanto, isso é desnecessariamente complicado: você está listando muitos atributos de arquivo, então use awk para extrair o nome. Além disso, você não precisa iniciar um subshell para executar os comandos gerados. Além disso, o comando acima não funcionará se houver espaços em um nome de arquivo.
O seguinte aborda todos esses pontos:
ls -t *.xls | head -10 | while read; do mv "$REPLY" "$REPLY-bkp"; done
Nesse caso, ls -t lista apenas os nomes dos arquivos, um por linha; read copia cada linha completa REPLY, incluindo todos os espaços, sejam incorporados, principais ou finais; e a mv comando é executado para cada linha.
Note que o mais comum read name irá copiar uma linha para name, mas sem espaços iniciais e finais.