Si sabe que ningún nombre de archivo contiene saltos de línea, use jq:
ls | jq -R -s -c 'split("\n")[:-1]'
Breve explicación de las banderas a jq:
-R
trata la entrada como cadena en lugar de JSON-s
une todas las líneas en una matriz-c
crea una salida compacta[:-1]
elimina la última cadena vacía en la matriz de salida
Esto requiere la versión 1.4 o posterior de jq. Prueba esto si no te funciona:
ls | jq -R '[.]' | jq -s -c 'add'
Sí, pero los casos de esquina y el manejo de Unicode lo llevarán a la pared. Es mejor delegar a un lenguaje de secuencias de comandos que lo admita de forma nativa.
$ ls
あ a "a" à a b 私
$ python -c 'import os, json; print json.dumps(os.listdir("."))'
["\u00e0", "\"a\"", "\u79c1", "a b", "\u3042", "a"]