GNU/Linux >> Tutoriales Linux >  >> Linux

convertir la salida de bash `ls` a una matriz json

Si sabe que ningún nombre de archivo contiene saltos de línea, use jq:

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

Breve explicación de las banderas a jq:

  • -R trata la entrada como cadena en lugar de JSON
  • -s une todas las líneas en una matriz
  • -c crea una salida compacta
  • [:-1] elimina la última cadena vacía en la matriz de salida

Esto requiere la versión 1.4 o posterior de jq. Prueba esto si no te funciona:

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


Sí, pero los casos de esquina y el manejo de Unicode lo llevarán a la pared. Es mejor delegar a un lenguaje de secuencias de comandos que lo admita de forma nativa.

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

Linux
  1. ¿Convertir la salida del comando Tree a formato Json?

  2. Bash Script:¿Cómo asignar cada línea de salida de comando a valores en una matriz?

  3. Matrices bash con ejemplos

  4. Convertir formatos de fecha en bash

  5. Convertir una salida a cadena

Bash:escribir en archivo

Arreglos bash

Matriz asociativa en Bash

Bash capturando la salida de awk en una matriz

Convertir legible por humanos a bytes en bash

Usando jq para obtener el valor clave de la salida json