ファイル名に改行が含まれていないことがわかっている場合は、jq:を使用してください:
ls | jq -R -s -c 'split("\n")[:-1]'
jq へのフラグの簡単な説明:
-R
入力を JSON ではなく文字列として扱います-s
すべての行を配列に結合-c
コンパクトな出力を作成します[:-1]
出力配列の最後の空の文字列を削除します
これには、バージョン 1.4 以降の jq が必要です。うまくいかない場合は、これを試してください:
ls | jq -R '[.]' | jq -s -c 'add'
はい。ただし、まれなケースと Unicode の処理により、壁を乗り越えることができます。ネイティブでサポートされているスクリプト言語に委譲する方がよいでしょう。
$ ls
あ a "a" à a b 私
$ python -c 'import os, json; print json.dumps(os.listdir("."))'
["\u00e0", "\"a\"", "\u79c1", "a b", "\u3042", "a"]