【shell】用 ls 结合 awk 统计有大量小文件目录的大小

一、 Linux ls 显示文件大小时显示单位

在Linux中显示文件大小的时候,一般的做法是使用“ls -l”,显示的大小是文件的字节(byte)大小。

但是,如果文件比较大的话,显示起来不是特别易读,这个时候,可以使用“ls -lh”,就可以使用比较接近文件大小的单位显示文件的大小。

【shell】用 ls  结合 awk 统计有大量小文件目录的大小

【shell】用 ls  结合 awk 统计有大量小文件目录的大小

Linux Shell 下许多命令在打印文件大小信息时,默认使用的是字节作为单位。
但为了方便用户使用,往往这些命令提供选项参数 -B[SIZE] 或 –block-size=SIZE 给用户来指定文件大小的单位,列如 ls、df、du 命令等。

【shell】用 ls  结合 awk 统计有大量小文件目录的大小

注: Linux Shell 命令在列举文件大小信息时,当文件大小不是单位大小的整数倍数时,采用的是上取整的方式。

【shell】用 ls  结合 awk 统计有大量小文件目录的大小

【shell】用 ls  结合 awk 统计有大量小文件目录的大小

二、用 ls 结合 awk 统计

数据目录下数据按照年/月/日归档,存储的都是小文件
每个文件很小,但是数量大,用 du -sh 统计费时费力,甚至无法统计。
可以使用 ls 结合 awk ,做累加统计。

cat stats_data.sh

#!/bin/bash
 
datadir="/path/to/2022"
 
for x in `ls ${datadir}`
do
  for y in `ls ${datadir}/${x}`
   do
     echo "${datadir}/${x}/${y}:"
     echo  ""
     ls -l ${datadir}/${x}/${y} | grep -wv "total" | awk  {sum+=$5} END{print sum/(1024^3)} 
   done
done

注:
1.累加值/1024^3 ,将byte 转换为 G

  1. 特别要注意,如果有隐藏文件,的确 又需要统计,那么用 ls -la

/path/to/2022/06/21:

3.40837

三、参考

LinuxShell下文件大小单位
https://cloud.tencent.com/developer/article/1948446

关于用于 awk 统计文件大小的实用小tips
https://www.cnblogs.com/jujujulie/p/15742730.html

Learn X in Y minutes
https://learnxinyminutes.com/?continueFlag=af5fa60c4ac01d0b0f887c80ac28e5be

© 版权声明
THE END
如果内容对您有所帮助,就支持一下吧!
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容