ディレクトリからファイルを抽出し、ファイル名とサイズ(KB単位)をCSVファイルに保存します。

ディレクトリからファイルを抽出し、ファイル名とサイズ(KB単位)をCSVファイルに保存します。

/var/logディレクトリからすべての.logファイルを検索し、結果を各ログファイルの対応するファイルサイズ(kB)と共にcsvファイルに保存したいと思います。

まず、 find を使用してファイルをインポートします。

find . -type f -name "*.log"

どのようにファイルとして保存できますか?

答え1

GNUの使用find:

find . -name '*.log' -printf '%p,%s\n'

これにより、ファイル名とファイルサイズがカンマで区切られ、バイト単位で印刷されます。ファイルのデフォルト名のみが必要な場合(つまり、パスなし)の%f代わりに使用してください。%p

キロバイト(10 ^ 3単位、「KB」)またはキロバイト(2 ^ 10単位、「KiB」)としてマークするには、出力を後処理する必要があります。バラよりdu, ls1 など、バイト数を人間の KiB MiB などに変換する標準ツールです。これを行う方法はいくつかあります。各行の2番目のフィールドだけを変更したいので、awkorを使用するのが最も簡単です。perl

答え2

これが最善の推測であり、私のホームディレクトリのvar-log.csvというファイルに内容を入れました。

find . -type f -name "*.log" -exec ls -s {} \; > ~/var-log.csv

答え3

これは役に立つかもしれません:

ls -l --block-size=K *.log | awk {'print $9","$5'} > nameSize.csv

答え4

ls -l は、必要なすべてのデータとそれ以上を提供します。

:ls -l /var/log/*.log
...
-rw-r--r-- 1ルートルート123456 7月11日17:28 /var/log/xinetd.log
...

その後、awkを使用して必要なフィールドを抽出できます。

:ls -l /var/log/*.log | awk '{print $5,$9}'
123456 /var/log/xinetd.log

他の文字と分離するには、次の手順を実行します。

:ls -l /var/log/*.log | awk '{print $5","$9}'
123456,/var/log/xinetd.log

関連情報