Il problema non è quel more e less non stanno colorando il loro output, è quel ls non emette il colore perché è connesso a un altro processo anziché al terminale.
 Non puoi facilmente ottenere ls per essere più intelligente riguardo a quando emette il colore, ma puoi aggiungere --color per forzare l'output del colore quando lo trasferisci a more 
 Quando hai un output a colori, usa ... |less -R per fare less passa i colori al terminale invece di mostrare i codici escape come testo
ls --color | less -r
Testato su Linux, area utente GNU.