GNU/Linux >> Belajar Linux >  >> Linux

konversi keluaran bash `ls` ke array json

Jika Anda mengetahui bahwa tidak ada nama file yang berisi baris baru, gunakan jq:

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

Penjelasan singkat tentang flag ke jq:

  • -R memperlakukan input sebagai string, bukan JSON
  • -s menggabungkan semua baris menjadi array
  • -c membuat keluaran yang ringkas
  • [:-1] menghapus string kosong terakhir dalam larik keluaran

Ini membutuhkan jq versi 1.4 atau lebih baru. Coba ini jika tidak berhasil untuk Anda:

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


Ya, tetapi kasing sudut dan penanganan Unicode akan membuat Anda naik tembok. Lebih baik mendelegasikan ke bahasa skrip yang mendukungnya secara bawaan.

$ ls
あ  a  "a"  à  a b  私
$ python -c 'import os, json; print json.dumps(os.listdir("."))'
["\u00e0", "\"a\"", "\u79c1", "a b", "\u3042", "a"]

Linux
  1. Ubah Output Perintah Pohon Ke Format Json?

  2. Parsing Satu Bidang Dari Json Array Ke Bash Array?

  3. Bagaimana Cara Membuat Array Elemen Unik Dari String/array Di Bash?

  1. Bash Array Dari Array?

  2. Bash Script:Bagaimana Menetapkan Setiap Baris Perintah Output Ke Nilai Dalam Array?

  3. Bash Konversi \xc3\x89 Ke ?

  1. Bash Array Dengan Contoh

  2. Konversi format tanggal dalam bash

  3. Ubah keluaran ls menjadi csv