Linux脚本之快速分析文件大小分布情况
本文于 6 天前发布,最后更新于 6 天前

注意:本脚本不计算软链接的真实文件大小

一、脚本内容

#!/bin/sh
set -eu

tabs -8

# 检查输入参数,如果没有指定目录,则默认为根目录
dir=${1:-/}

# 使用find命令统计文件大小,排除指定目录
find "$dir" \( -path "/proc/*" -o -path "/sys/*" -o -path "/boot/*" -o -path "/run/*" -o -path "/dev/*" \) -prune -o -type f -exec du -b -- {} + | awk -vOFS='\t' '
BEGIN {split("KB MB GB TB PB", u); u[0] = "B"}
{
    ++hist[$1 ? length($1) - 1 : -1]
    total += $1
}
END {
    max = -2
    for (i in hist)
        max = (i > max ? i : max)

    print "From", "To", "Count\n"
    for (i = -1; i <= max; ++i)
    {
        if (i in hist)
            {
                if (i == -1)
                    print "0B", "0B", hist[i]
                else
                    print 10 ** (i       % 3) u[int(i       / 3)],
                          10 ** ((i + 1) % 3) u[int((i + 1) / 3)],
                    hist[i]
            }
    }
    base = 1024
    unit = "B"
    if (total >= base) {
        total /= base
        unit = "KB"
    }
    if (total >= base) {
        total /=base
        unit = "MB"
    }
    if (total >= base) { 
       	total /=base
       	unit = "GB"
    }
    if (total >= base) { 
       	total /=base
       	unit = "TB"
    }
    printf "\nTotal: %.1f %s in %d files\n", total, unit, NR
}'

二、使用方法

[root@dameng linuxscript]# ./file_size_distribution.sh /home/wwwroot/wordpress/
From    To      Count                                                                                                                                                                                  

0B	0B	27
1B	10B	8
10B	100B	296
100B	1KB	3309
1KB	10KB	6629
10KB	100KB	4444
100KB	1MB	1225
1MB	10MB	54
10MB	100MB	1
100MB	1GB	3

Total: 1.8 GB in 15996 files
[root@dameng linuxscript]# find /home/wwwroot/wordpress/ -type f -size +10M
/home/wwwroot/wordpress/wp-content/plugins/yaya-comment-ip/ip-data/qqwry.dat
/home/wwwroot/wordpress/wp-content/backups-dup-lite/WordPress_Backup_202411281540_743e9f6d5a6adcd51101_20241128074043_archive.zip
/home/wwwroot/wordpress/wp-content/backups-dup-lite/WordPress_Backup_202411281540_2d35e6e0f53082cd2170_20241204031044_archive.zip
/home/wwwroot/wordpress/wp-content/backups-dup-lite/WordPress_First_Backup_849864da946d7fcc5140_20241125093438_archive.zip

效果图如下

如图,脚本分析结果大于10M的文件共有1+3=4个,与find命令查找到的文件数一致。

暂无评论

发送评论 编辑评论


|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇