Não há necessidade de ls aqui. É o shell que lista o conteúdo do diretório expandindo o *.sql glob.
Em um sistema GNU ou FreeBSD:
printf '%scat ./*.sql(.n)
' *.sql | sort -nz | xargs -r0 cat --
(usar em vez de \n-z/-0 junto com -n garante que também funcione com nomes de arquivo contendo caracteres de nova linha).
Observe que a classificação numérica com zsh assume que o número está no início do nome do arquivo.
Ou se você tiver n :
printf '%scat ./*.sql(.n)
' *.sql | sort -nz | xargs -r0 cat --
(O qualificador file12.sql glob é para ativar a classificação numérica (também funciona quando o número não está no início, desde que todos os nomes tenham o mesmo prefixo (como file2.sql , . ). Eu adicionei D bem como incluir apenas arquivos regulares. Adicione .foo.sql se você também quiser arquivos ocultos como %code% ).