GNU/Linux >> Linux の 問題 >  >> Linux

ls 出力を csv に変換する

日付のスペースを気にしない場合:

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

それらのスペースが気になる場合:

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

ファイル名に空白が含まれている場合、これらはどちらも機能しません。ファイル名のスペースを処理するためのハックとして、次を試すことができます:

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

最初の 8 個のコンマを除くすべてを削除するには (sed を想定) 非標準の 8g をサポート gnu sed と同様のオプション)。もちろん、これはファイル名のコンマを処理しません。


コマンドラインで入力するには少し長いですが、ファイル名のスペースを適切に保持します (そして引用符も付けます!)

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. ツリーコマンドの出力をJson形式に変換しますか?

  2. 出力を新しい行に分割しますか?

  3. ハードリンクをシンボリックリンクに変換しますか?

  1. Linuxでタブ区切りファイルをcsvに変換する最速の方法

  2. シェルで .txt を .csv に変換する

  3. コマンド出力をAnsibleの配列に保存する方法は?

  1. Linux のシェル出力を HTML に変換するには?

  2. 複数の PDF ファイルを 1 つの PDF に結合/変換する

  3. UNIXシェルでグレースケール画像をアルファチャンネル画像に変換する