bash の `ls` 出力を json 配列に変換する 質問する

bash の `ls` 出力を json 配列に変換する 質問する

bash スクリプトを使用して出力をlsjson 配列にフォーマットすることは可能ですか? 有効な json にするには、ディレクトリとファイルのすべての名前を二重引用符で囲み、カンマで区切り、全体を角括弧で囲む必要があります。つまり、次のように変換します。

jeroen@jeroen-ubuntu:~/Desktop$ ls
foo.txt bar baz

[ "foo.txt", "bar", "baz" ]

編集: 私はすべての Linux サーバーで動作するものを強く希望しています。そのため、Python に依存せず、純粋な bash ソリューションを使用します。

ベストアンサー1

ファイル名に改行が含まれていないことが分かっている場合は、jq を使用します。

ls | jq -R -s -c 'split("\n")[:-1]'

jq のフラグの簡単な説明:

  • -R入力をJSONではなく文字列として扱います
  • -sすべての行を配列に結合する
  • -cコンパクトな出力を作成する
  • [:-1]出力配列の最後の空文字列を削除します

これには、jq のバージョン 1.4 以降が必要です。うまくいかない場合は、これを試してください:

ls | jq -R '[.]' | jq -s -c 'add'

おすすめ記事