Linux下如何查看一个文件夹的大小?

在Linux系统中,管理磁盘空间是日常运维和开发中常见的任务,准确查看文件夹大小有助于快速定位占用空间过多的目录,从而进行清理或优化,本文将详细介绍Linux中查看文件夹大小的多种方法,从基础命令到高级技巧,帮助用户在不同场景下高效获取目录大小信息。

linux如何查看一个文件夹的大小

基础命令:du——查看目录磁盘占用的核心工具

du(disk usage)是Linux中专门用于查看文件和目录磁盘占用的命令,其基本语法为du [选项] [目录/文件],默认情况下,du会递归显示指定目录下每个子目录和文件的磁盘占用,单位为512字节的块(blocks),输出结果可能不够直观,因此通常结合选项使用,以下是核心参数及示例:

  • -h--human-readable:以人类可读格式显示大小(如K、M、G),默认显示的是块数,加-h后更易理解。

    du -h /home/user  # 查看/home/user目录及其子目录的大小,以K/M/G为单位
  • -s--summarize:仅显示总计大小,不显示子目录的详细信息,适合快速查看目录总大小。

    du -sh /var/log  # 仅显示/var/log目录的总占用空间
  • -c--total:显示所有文件和目录的总和,常与其他选项配合使用,比如查看多个目录的总占用。

    du -sh /home /tmp /var  # 分别显示/home、/tmp、/var的大小,并最后输出总和
  • --max-depth=N:限制递归深度,N为数字,1表示只显示当前目录下一级子目录的大小,避免输出过多层级。

    du -h --max-depth=1 /home  # 查看/home下各直接子目录的大小,不递归
  • -a--all:显示所有文件的大小,默认只显示目录大小,加-a后会同时列出文件占用。

    du -ha /etc  # 查看/etc目录下所有文件和子目录的大小

dudf的区别:不要混淆“目录占用”与“文件系统空间”

虽然du是查看目录大小的主要工具,但有时会与df(disk free)命令混淆。df用于查看文件系统的整体使用情况(如已用空间、可用空间、挂载点等),而du则是计算具体文件或目录的实际占用空间,两者的核心区别如下:

命令 主要用途 输出信息 常用场景
du 查看文件/目录的磁盘占用 具体文件或目录的大小(可递归) 定位大文件、清理目录
df 查看文件系统的使用情况 文件系统总大小、已用、可用、挂载点 检查磁盘整体空间是否不足

df -h会显示/dev/sda1挂载点的总空间、已用空间等,而du -sh /则显示根目录下所有文件的实际占用大小,两者数值可能不同(原因见后文FAQ)。

linux如何查看一个文件夹的大小

高级技巧:灵活组合du与其他工具

排除特定文件或目录

使用--exclude选项可排除不需要统计的文件或目录,例如排除.cache目录:

du -h --exclude=".cache" /home/user  # 查看/home/user大小,但不统计.cache目录

若需排除多个类型,可多次使用--exclude,如排除.log.tmp文件:

du -h --exclude="*.log" --exclude="*.tmp" /var/log

按文件类型查找大小

结合find命令可筛选特定类型的文件并统计大小,例如查找.log文件的总占用:

find /var/log -type f -name "*.log" -exec du -ch {} + | grep total

解释:find查找所有.log文件,-exec将文件传递给du -ch-c显示总和),最后通过grep total提取总大小。

按大小排序,快速定位大目录

查看当前目录下子目录大小并从大到小排序,便于优先清理大目录:

du -h --max-depth=1 . | sort -hr

解释:sort -hr表示按人类可读格式(-h)反向(-r)排序,数值大的排在前面。

实时监控目录大小变化

使用watch命令定时刷新目录大小,例如每2秒查看一次/data目录的变化:

watch -n 2 "du -sh /data"

交互式工具:ncdu(推荐)

ncdu(NCurses Disk Usage)是第三方工具,提供交互式界面,支持导航、删除、排序等功能,比du更直观,安装方式(根据发行版不同):

linux如何查看一个文件夹的大小

  • Debian/Ubuntu:sudo apt install ncdu
  • CentOS/RHEL:sudo yum install ncdu
    使用时直接运行:

    ncdu /path/to/directory  # 进入交互界面,可通过方向键导航,按`d`删除文件

实际应用场景举例

  • 场景1:服务器磁盘告警,定位大目录
    若根目录占用过高,可先查看一级子目录大小:

    du -sh /* --max-depth=1 | sort -hr

    假设发现/var占用最大,再进入/var用相同方法排查,最终定位到/var/log/nginx日志文件过多,清理即可。

  • 场景2:开发环境清理,排除无用文件
    清理项目目录时,需排除.gitnode_modules(通常占用较大):

    du -h --exclude=".git" --exclude="node_modules" /project

相关问答FAQs

Q1:为什么用du查看的目录大小和df中对应文件系统的已用空间不一致?

A:两者统计逻辑不同。du统计的是目录下所有文件的实际数据大小(不包括文件元数据如inode、权限等信息),而df统计的是文件系统中已分配的块(包括文件数据、元数据、保留空间等)。

  • 删除文件后,du会立即反映大小减少,但df可能因文件系统未及时回收块而暂时不变(需运行sync或等待文件系统自动回收);
  • 空文件(如touch file)会占用inode,df会统计其占用的块(即使数据为0),但du可能显示0(若无数据)。

Q2:如何快速找到当前目录下占用空间最大的10个文件或文件夹?

A:可通过du结合sorthead命令实现:

du -ah . | sort -hr | head -n 10

解释:-a显示所有文件,-h人类可读,sort -hr按大小反向排序,head -n 10取前10条,若需交互式操作,安装ncdu后运行ncdu .,通过界面快速定位并管理大文件(如按大小排序、按名称筛选等)。

原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/26929.html

(0)
酷番叔酷番叔
上一篇 2025年9月20日 16:05
下一篇 2025年9月20日 16:24

相关推荐

  • Linux系统如何开启DNS服务?

    在Linux系统中,DNS(域名系统)配置是网络通信的基础,它负责将人类可读的域名(如www.example.com)转换为机器可识别的IP地址,正确配置DNS不仅能确保网络连接正常,还能优化访问速度、提升安全性,本文将详细介绍Linux系统中查看、修改及排查DNS配置的多种方法,涵盖命令行工具、配置文件操作及……

    2025年8月27日
    3700
  • 如何用Bash提升工作效率?

    在Linux中安装并配置VNC(Virtual Network Computing)可实现远程图形化桌面访问,以下是基于Ubuntu/Debian系统的专业操作指南(其他发行版命令略有差异),注重安全性和最佳实践:安装前准备更新系统 sudo apt update && sudo apt upg……

    2025年6月21日
    5800
  • linux如何查看带宽占用

    Linux中,可以使用iftop、nload或bmon等命令

    2025年8月10日
    4200
  • linux如何判断文件类型

    Linux中,可使用file命令判断文件类型,如file filename,也可

    2025年8月16日
    3300
  • linux如何执行c文件

    Linux中,可先使用gcc编译C文件生成可执行文件,再通过.

    2025年8月17日
    4100

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信