Si vous savez qu'aucun nom de fichier ne contient de nouvelles lignes, utilisez jq :
ls | jq -R -s -c 'split("\n")[:-1]'
Petite explication des drapeaux à jq :
-R
traite l'entrée comme une chaîne au lieu de JSON-s
joint toutes les lignes dans un tableau-c
crée une sortie compacte[:-1]
supprime la dernière chaîne vide dans le tableau de sortie
Cela nécessite la version 1.4 ou ultérieure de jq. Essayez ceci si cela ne fonctionne pas pour vous :
ls | jq -R '[.]' | jq -s -c 'add'
Oui, mais les cas d'angle et la gestion Unicode vous feront grimper au mur. Mieux vaut déléguer à un langage de script qui le supporte nativement.
$ ls
あ a "a" à a b 私
$ python -c 'import os, json; print json.dumps(os.listdir("."))'
["\u00e0", "\"a\"", "\u79c1", "a b", "\u3042", "a"]