ls verifica se o STDOUT está conectado a um terminal ( isatty(1) ), se não, então, ele exibe cada nome de arquivo em uma linha separada.
Você pode usar ls -C >out.txt ou echo * >out.txt para obter a listagem no formato de coluna, embora em ambos os casos a saída não esteja na forma exata como mostrado por ls quando a saída estiver indo para um terminal.