GNU/Linux >> Linux Esercitazione >  >> Linux

Converti l'output ls in csv

Se non ti interessano gli spazi nella data:

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

Se ti interessano questi spazi:

$ 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 )}'

Nessuno di questi funzionerà se i nomi dei file contengono spazi bianchi. Come trucco per gestire gli spazi nel nome del file, potresti provare:

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

per eliminare tutto tranne le prime 8 virgole (supponendo che il tuo sed supporta il 8g non standard come fa gnu sed). Ovviamente questo non si occuperà delle virgole nel nome del file.


È un po' lungo da digitare nella riga di comando, ma conserva correttamente gli spazi nel nome del file (e lo cita anche!)

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. Rottura dell'output in nuove righe?

  2. Convertire un collegamento fisico in un collegamento simbolico?

  3. Come convertire l'output della shell di Linux in HTML?

  4. il modo più veloce per convertire file delimitati da tabulazioni in csv in linux

  5. Come convertire un file TAR in un file ISO

Converti la tua installazione di Windows in una VM su Linux

Come convertire le immagini in formato ASCII in Linux

Come convertire xlsx in formato CSV in Linux

Converti l'output del comando ad albero in formato Json?

Converti la chiave privata Openssh in una chiave privata Ssh2?

Come importare dati in Apache Solr