Se sai che nessun nome di file contiene newline, usa jq:
ls | jq -R -s -c 'split("\n")[:-1]'
Breve spiegazione dei flag a jq:
-R
tratta l'input come stringa invece che come JSON-s
unisce tutte le righe in un array-c
crea un output compatto[:-1]
rimuove l'ultima stringa vuota nell'array di output
Ciò richiede la versione 1.4 o successiva di jq. Prova questo se non funziona per te:
ls | jq -R '[.]' | jq -s -c 'add'
Sì, ma i casi angolari e la gestione Unicode ti faranno impazzire. Meglio delegare a un linguaggio di scripting che lo supporti nativamente.
$ ls
あ a "a" à a b 私
$ python -c 'import os, json; print json.dumps(os.listdir("."))'
["\u00e0", "\"a\"", "\u79c1", "a b", "\u3042", "a"]