GNU/Linux >> Tutoriels Linux >  >> Linux

convertir la sortie bash `ls` en tableau json

Si vous savez qu'aucun nom de fichier ne contient de nouvelles lignes, utilisez jq :

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

Petite explication des drapeaux à jq :

  • -R traite l'entrée comme une chaîne au lieu de JSON
  • -s joint toutes les lignes dans un tableau
  • -c crée une sortie compacte
  • [:-1] supprime la dernière chaîne vide dans le tableau de sortie

Cela nécessite la version 1.4 ou ultérieure de jq. Essayez ceci si cela ne fonctionne pas pour vous :

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


Oui, mais les cas d'angle et la gestion Unicode vous feront grimper au mur. Mieux vaut déléguer à un langage de script qui le supporte nativement.

$ 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 sortie de la commande Tree au format Json ?

  2. Comment créer un tableau d'éléments uniques à partir d'une chaîne/tableau dans Bash ?

  3. Bash tableau de tableaux?

  4. Tableaux bash avec exemples

  5. Diviser la sortie de la commande par colonnes à l'aide de Bash ?

Bash :Écrire dans un fichier

Tableaux bash

Tableau associatif dans Bash

Bash capturant la sortie de awk dans le tableau

Convertir lisible par l'homme en octets dans bash

Utilisation de jq pour récupérer la valeur de la clé à partir de la sortie json