A saída de ls já está classificada por padrão da mesma maneira que sort classifica por padrão, portanto, sort não é necessário.
A maneira mais comum de passar uma lista gerada de arquivos para um comando é usar xargs . Veja a página xargs man para detalhes, mas neste caso você não precisa de nenhuma opção. ( xargs pode não fazer o que você quer se você tiver um grande número de arquivos, mas nos casos mais comuns ele funciona bem sem que você precise pensar sobre isso.)
A versão de tail usada em muitos sistemas Linux atualmente não aceita apenas -3 como uma opção. Isso requer que você use -n3 .
Finalmente, o cat no final do seu pipeline não está fazendo nada útil, então ele pode ser omitido também.
Este comando deve fazer o que você quiser.
ls | xargs tail -n3
Atualizar
Acabei de ler a resposta do @ AtomicHeartFather e percebi que posso ter colocado o tail na parte errada do problema. Nesse caso, o comando seria
ls | tail -n3 | xargs cat
que é praticamente o que o AtomicHeartFather escreveu, exceto pelo sort .