Primeiro, faça não analisar ls . Existem muitas formas confiáveis de obter nomes de arquivos, mas ls não é um deles .
O seguinte usa o globbing do shell para gerar nomes de arquivos e passa uma lista nula separada deles para xargs , que os executa através de cat :
printf '%scat *
' * | xargs -0 cat
Eu entendo que o objetivo disso foi demonstrar arquivos- > xargs. Caso contrário, é claro, a menos que haja arquivos demais para caber em uma linha de comando, os itens acima podem ser substituídos por:
find . -maxdepth 1 -type f -print0 | xargs -0 cat
Sendo mais seletivo
Tanto ls como printf '%s exibirão todo o conteúdo de um diretório, incluindo seus subdiretórios. Se você quiser ser mais seletivo, digamos, incluindo arquivos regulares, mas não subdiretórios, como sugere cas, find' *find é uma ferramenta melhor:
find . -maxdepth 1 -type f -exec cat {} +
Ou:
printf '%scat *
' * | xargs -0 cat
man find tem muitas opções úteis. Veja %code% para detalhes.