Linux下统计目录文件大小的实用方法

admin
在Linux中,统计目录文件大小是日常管理的重要需求,核心命令du(disk usage)可高效实现:du -sh能快速显示当前目录总大小(-s汇总,-h人类可读格式);du -h --max-depth=1则可查看一级子目录的占用情况,便于定位大容量文件夹,若需交互式分析,可使用ncdu,它提供可视化界面,支持实时浏览和删除文件,这些方法能帮助用户快速掌握目录存储占用,有效优化磁盘空间管理。

在Linux系统管理中,统计目录下文件的大小是常见需求,比如排查磁盘占用、清理冗余文件、分析存储空间分布等,本文将介绍多种实用命令,帮助您高效完成目录文件大小的统计任务。

基础命令:du——目录空间占用分析工具

du(disk usage)是Linux中最常用的目录空间统计命令,默认以字节为单位显示目录及其子目录的占用空间。

基本用法:统计当前目录总大小

du -sh .
  • -s(summarize):仅显示总计,不递归显示子目录详情;
  • -h(human-readable):以人性化单位显示(KB、MB、GB);
  • 表示当前目录,可替换为任意目录路径(如/var/log)。

示例输出:

Linux下统计目录文件大小的实用方法

2G    .

递归显示子目录大小(按大小排序)

若需查看目录下各子目录的占用情况并排序:

du -h | sort -hr
  • sort -hr:按数值从大到小排序(-h确保按单位比较,-r降序)。

示例输出:

2G    .
400M    ./downloads
300M    ./videos
150M    ./documents
50K     ./temp

排除特定文件或目录

若需排除某些文件(如.log文件)或目录(如temp):

du -sh --exclude="*.log" --exclude="temp" .
  • --exclude:指定排除的文件名或目录名,支持通配符(如*.tmp)。

限制递归深度

仅统计当前目录及一级子目录的大小(不递归更深层目录):

du -sh --max-depth=1 .

示例输出:

2G    .
400M    ./downloads
300M    ./videos
500M    ./others

进阶方法:find+du——按条件筛选文件统计

若需按文件类型、修改时间等条件筛选文件并统计大小,可结合find命令与du

统计特定扩展名的文件总大小

统计当前目录下所有.mp4文件的总大小:

find . -type f -name "*.mp4" -exec du -ch {} + | grep total$
  • -type f:仅查找普通文件(排除目录、链接等);
  • -name "*.mp4":匹配文件名以.mp4
  • -exec du -ch {} +:对每个匹配文件执行du -ch,比\;更高效(批量处理);
  • grep total$:过滤出du输出的汇总行(total)。

示例输出:

5G    total

统计最近7天内修改的文件大小

find . -type f -mtime -7 -exec du -ch {} + | grep total
  • -mtime -7:查找7天内修改过的文件(-n表示n天内,+n表示n天前)。

统计大于100MB的文件

find . -type f -size +100M -exec du -ch {} + | grep total
  • -size +100M:查找大小大于100MB的文件(支持大于、小于,单位如K/M/G)。

快速统计:ls+awk——当前目录文件大小汇总

若仅需统计当前目录(不含子目录)下所有文件的总大小,可结合lsawk

ls -l | awk '{sum+=$5} END {print "Total size:", sum/1024/1024, "MB"}'
  • ls -l:列出文件详细信息(第5列为文件大小,单位为字节);
  • awk:逐行处理,累加第5列的值,最后转换为MB输出。

示例输出:

Total size: 512.3 MB

可视化工具:ncdu——交互式目录分析

若需交互式查看目录大小分布(支持导航、删除文件等),可安装ncdu(NCurses Disk Usage):

安装

# Debian/Ubuntu
sudo apt install ncdu
# CentOS/RHEL
sudo yum install ncdu

使用

ncdu /path/to/directory

运行后,可通过上下键导航,按d删除文件,按n隐藏文件,按查看帮助,直观分析目录空间占用。

注意事项

  1. 权限问题:若统计的目录无访问权限(如/root),需使用sudo获取权限(如sudo du -sh /root)。
  2. 符号链接du默认跟随符号链接(统计链接指向的实际文件大小),若需排除链接,可加-l参数(du -shl)。
  3. 文件名含空格/特殊字符find+xargs组合可处理复杂文件名(如find . -print0 | xargs -0 du -ch)。
需求场景 推荐命令
统计目录总大小 du -sh 目录
查看子目录大小并排序 du -h | sort -hr
按条件筛选文件统计
文章版权声明:除非注明,否则均为xmsdn原创文章,转载或复制请以超链接形式并注明出处。

取消
微信二维码
微信二维码
支付宝二维码