You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AIX/Unix脚本:递归识别高磁盘占用文件及脚本优化需求

AIX/Unix下递归识别高磁盘占用非二进制文件的脚本优化方案

核心优化方向

针对你的需求,脚本优化要围绕先筛选大文件、再过滤非二进制类型、包含隐藏文件这三个核心点展开,同时兼顾AIX平台特性,提升扫描效率。

通用优化建议(针对你现有脚本)

  1. 调整过滤顺序,优先按大小筛选
    先通过find的-size参数过滤出大文件,再调用file判断文件类型,避免对大量小文件执行耗时的类型检测,大幅提升性能。
  2. 确保不排除隐藏文件
    检查现有脚本是否存在-not -name ".*"这类规则,若有则删除——find默认会递归遍历所有文件(包括隐藏文件),无需额外配置。
  3. 忽略无权限文件
    扫描系统路径时添加2>/dev/null,避免权限不足的错误输出干扰结果。
  4. 适配AIX平台特性
    AIX的find、file、du命令参数与GNU版本有差异,需调整单位和匹配规则(具体见下文示例)。

具体实现脚本(适配AIX/Unix)

基础版本(筛选100MB以上非二进制文件)

#!/bin/ksh
# 配置参数:最小文件大小(AIX下默认是512字节块,100MB=204800块)
MIN_BLOCKS="+204800"
# 目标扫描路径,替换为实际路径
TARGET_DIR="/your/target/path"

# 递归扫描+过滤逻辑
find "$TARGET_DIR" -type f -size $MIN_BLOCKS -exec sh -c '
    for file do
        # AIX下file命令文本文件通常输出"ASCII text"或"text file",按需调整匹配规则
        if file "$file" | grep -qE "(ASCII text|text file|UTF-8 text)" ; then
            # AIX下du不支持-h,用-k显示KB,-m显示MB
            du -m "$file"
        fi
    done
' sh {} + 2>/dev/null

进阶版本(按文件大小降序排序)

如果需要直观看到最大的文件,添加排序逻辑:

#!/bin/ksh
MIN_BLOCKS="+204800"
TARGET_DIR="/your/target/path"

find "$TARGET_DIR" -type f -size $MIN_BLOCKS -exec sh -c '
    for file do
        if file "$file" | grep -qE "(ASCII text|text file)" ; then
            # 输出格式:文件大小(KB) 路径,方便排序
            du -k "$file"
        fi
    done
' sh {} + 2>/dev/null | sort -nr

AIX平台特殊注意事项

  • find的-size单位:AIX默认以512字节块为单位,若要指定MB,需手动换算(1MB=2048块),比如筛选50MB以上文件用-size +102400。
  • file命令匹配规则:AIX的file输出没有GNU版本丰富,文本文件通常显示ASCII text或text file,需根据实际输出调整grep的正则表达式。
  • du命令参数:AIX原生du不支持-h(人类可读格式),可用-k(KB)或-m(MB)替代。
  • 跨文件系统扫描:若不想扫描挂载的其他文件系统,给find添加-mount参数。

内容的提问来源于stack exchange,提问作者preethiyadav

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 17:35:25