GNU/Linux >> Belajar Linux >  >> Linux

Ubah keluaran ls menjadi csv

Jika Anda tidak peduli dengan spasi pada tanggal:

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

Jika Anda benar-benar peduli dengan ruang tersebut:

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

Tak satu pun dari ini akan berfungsi jika nama file Anda mengandung spasi. Sebagai retasan untuk mengatasi spasi pada nama file, Anda dapat mencoba:

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

untuk menghilangkan semua kecuali 8 koma pertama (dengan asumsi sed Anda mendukung 8g yang tidak standar opsi seperti yang dilakukan gnu sed). Tentu saja ini tidak akan berurusan dengan koma di nama file.


Agak lama untuk mengetik di baris perintah, tetapi ini mempertahankan spasi dengan benar di nama file (dan mengutipnya juga!)

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. Bagaimana cara mengubah output shell Linux ke HTML?

  2. cara tercepat mengonversi file yang dibatasi tab ke csv di linux

  3. Gabungkan / ubah beberapa file PDF menjadi satu PDF

  1. konversi keluaran bash `ls` ke array json

  2. openpyxl mengonversi CSV ke EXCEL

  3. Bash menangkap output dari awk ke dalam array

  1. Ubah Output Perintah Pohon Ke Format Json?

  2. Melanggar Output Menjadi Baris Baru?

  3. Ubah .txt menjadi .csv di shell