我想从目录 /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”),您需要对输出进行后处理。看将字节计数转换为人类 KiB MiB 等的标准工具;像du,ls1有几种方法可以做到这一点。使用awk
orperl
可能是最简单的,因为您只想修改每行的第二个字段。
答案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 root root 123456 Jul 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