
/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番目のフィールドだけを変更したいので、awk
orを使用するのが最も簡単です。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