Linux查看目录内文件大小的实用方法与技巧

admin
Linux查看目录文件大小有多种实用方法,ls -lh可列出文件详细信息并显示人类可读大小;du -sh快速统计目录总大小,--max-depth=1限制遍历层级;交互式工具ncdu能直观浏览并删除文件,结合find可筛选特定类型文件,如find . -type f -exec du -sh {} \;,掌握这些技巧能高效分析磁盘占用,快速定位大文件或目录,优化存储空间管理。

在Linux系统管理中,磁盘空间管理是一项日常重要任务,无论是排查服务器磁盘占用异常,还是清理本地电脑的冗余文件,快速查看一个目录内的文件大小都是必备技能,本文将详细介绍Linux系统中查看目录文件大小的常用命令、参数组合及实用技巧,帮助你高效掌握磁盘空间分析能力。

核心命令:du——目录磁盘使用量统计器

在Linux中,du(disk usage)命令是专门用于估算文件和目录磁盘使用空间的工具,它通过递归遍历目录中的所有子目录和文件,统计每个条目占用的块数(默认以512字节为1块),并最终汇总结果,要查看目录内的文件大小,du命令是最直接、最常用的选择。

du命令基础用法:快速查看目录大小

查看指定目录的总大小(默认单位:KB)

du /var/log

执行后,du会递归显示/var/log目录下所有子目录和文件的大小,最后一行是总和(单位为KB)。

Linux查看目录内文件大小的实用方法与技巧

8       /var/log/apt
4       /var/log/dist-upgrade
1204    /var/log

这里1204表示/var/log目录及其所有子文件共占用1204KB磁盘空间。

人类可读格式:-h参数让结果更直观

默认情况下,du以KB、MB等显示结果,但数字可能不够直观,使用-h(human-readable)参数,会自动转换为易读的格式(K、M、G):

du -h /var/log

输出示例:

8K      /var/log/apt
4K      /var/log/dist-upgrade
1.2M    /var/log

这样一眼就能看出/var/log目录占用约1.2MB空间。

仅显示目录总大小:-s参数避免冗余信息

如果不需要查看每个子目录的详情,只想知道目录的总大小,可以用-s(summarize)参数:

du -sh /var/log

输出:

2M    /var/log

-sh-s-h的组合,既汇总结果又以人类可读格式显示,是日常最常用的参数组合之一。

进阶用法:按需求定制输出内容

显示目录下所有文件的大小(包含子目录文件):-a参数

默认情况下,du不显示文件大小,仅显示目录,使用-a(all)参数可以同时列出文件和目录的大小:

du -ah /var/log --max-depth=1

这里结合--max-depth=1(限制递归深度为1层),仅显示/var/log直属目录和文件的大小,避免子目录的冗余输出:

0K    /var/log/apt/term.log
8.0K    /var/log/apt
4.0K    /var/log/dist-upgrade
1.2M    /var/log

限制递归深度:--max-depth参数

对于深层目录(如/home),递归所有子目录可能会输出大量信息,通过--max-depth=n可以限制递归层数(n为正整数):

# 查看/var/log目录及其直属子目录的大小(不递归孙目录)
du -h --max-depth=2 /var/log

输出示例:

0K    /var/log/apt
4.0K    /var/log/dist-upgrade
12K     /var/log/journal
1.2M    /var/log

按大小排序:结合sort命令

要找出目录下占用空间最大的子目录或文件,可以先将结果按大小排序(从大到小):

# 查看当前目录下所有子目录大小,并按从大到小排序
du -h --max-depth=1 . | sort -hr

说明:

  • du -h --max-depth=1 .:统计当前目录()下直属子目录的大小,人类可读格式。
  • | sort -hr:通过管道将结果传递给sort命令,-h表示按人类可读的数字大小排序,-r表示降序(从大到小)。

输出示例:

2M    ./var/log
12K     ./var/lib
8.0K    ./var/cache
4.0K    ./var/tmp

排除特定文件/目录:--exclude参数

如果目录中有临时文件或日志文件不需要统计,可以用--exclude参数排除匹配模式:

# 统计/home/user目录大小,排除所有.tmp文件和Downloads子目录
du -sh --exclude="*.tmp" --exclude="Downloads" /home/user

辅助命令:dfncdu——补充视角的磁盘分析工具

df:查看文件系统整体磁盘使用情况

df(disk free)命令用于查看文件系统的磁盘空间使用情况(如、/home等分区的剩余空间),与du的侧重点不同:

df -h

输出示例:

Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1        50G   15G   33G  31% /
/dev/sdb1       100G   40G   60G  40% /home

df适合快速判断哪个分区磁盘紧张,而du用于定位分区内具体的大目录/文件。

ncdu:交互式磁盘使用分析工具(需安装)

如果需要更友好的交互式界面(类似htop对磁盘空间的分析),可以安装ncdu(NCurses Disk Usage)

# Ubuntu/Debian安装
sudo apt install ncdu
# CentOS/RHEL安装
sudo yum install ncdu
文章版权声明:除非注明,否则均为xmsdn原创文章,转载或复制请以超链接形式并注明出处。

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