GNU/Linux >> Znalost Linux >  >> Linux

Převeďte výstup ls na csv

Pokud vás nezajímají mezery v datu:

$ find . -ls | tr -s ' ' ,

Pokud vám na těchto prostorech záleží:

$ find . -ls | awk '{printf( "%s,%s,%s,%s,%s,%s,%s,%s %s %s,%s\n", $1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11 )}'

Ani jedno z toho nebude fungovat, pokud vaše názvy souborů obsahují mezery. Jako hack pro řešení mezer v názvu souboru můžete zkusit:

 ... | sed 's/,/ /8g'

abyste se zbavili všech kromě prvních 8 čárek (za předpokladu, že váš sed podporuje nestandardní 8g možnost jako gnu sed). Samozřejmě to nebude řešit čárky v názvu souboru.


Psaní na příkazovém řádku je trochu dlouhé, ale správně zachovává mezery v názvu souboru (a také jej uvozuje!)

find . -ls | python -c '
import sys
for line in sys.stdin:
    r = line.strip("\n").split(None, 10)
    fn = r.pop()
    print ",".join(r) + ",\"" + fn.replace("\"", "\"\"") + "\""
'

Linux
  1. Jak převést výstup shellu Linuxu do HTML?

  2. nejrychlejší způsob převodu souboru odděleného tabulátory na csv v linuxu

  3. Sloučit / převést více souborů PDF do jednoho PDF

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

  2. openpyxl převést CSV do EXCELu

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

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

  2. Jak uložit výstup příkazu do pole v Ansible?

  3. Převeďte obrázek ve stupních šedi na obrázek alfa kanálu v unixovém prostředí