GNU/Linux >> Znalost Linux >  >> Linux

převést výstup bash `ls` na pole json

Pokud víte, že žádný soubor neobsahuje nové řádky, použijte jq:

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

Krátké vysvětlení příznaků k jq:

  • -R zachází se vstupem jako s řetězcem namísto JSON
  • -s spojí všechny řádky do pole
  • -c vytváří kompaktní výstup
  • [:-1] odstraní poslední prázdný řetězec ve výstupním poli

To vyžaduje verzi 1.4 nebo novější jq. Pokud vám to nefunguje, zkuste toto:

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


Ano, ale rohová pouzdra a manipulace s Unicode vás vyženou na zeď. Je lepší delegovat skriptovací jazyk, který jej nativně podporuje.

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

Linux
  1. Převést výstup příkazu stromu do formátu Json?

  2. Bash Script:Jak přiřadit každý řádek výstupu příkazu k hodnotám v poli?

  3. Bash Převést \xc3\x89 na É?

  1. Bash pole s příklady

  2. Rozdělit výstup příkazu podle sloupců pomocí Bash?

  3. Pole v Bash nenalezeno

  1. Převést formáty data v bash

  2. Převeďte výstup ls na csv

  3. Bash zachycující výstup awk do pole