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

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

作者: Bogon | 来源:发表于2022-06-22 00:26 被阅读0次

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

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

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

image.png image.png

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

image.png

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

image.png image.png

二、用 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

相关文章

网友评论

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

      本文链接:https://www.haomeiwen.com/subject/rtrevrtx.html