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如何增加组

    Linux 中,可使用命令 groupadd [组名] 来增加新用户

    2025年8月10日
    10900
  • Linux如何开启端口?详细操作步骤是什么?

    在Linux系统中,端口是网络通信的入口,开启特定端口是部署服务(如Web服务器、数据库等)的基础操作,不同Linux发行版默认使用的防火墙工具不同,常见的有firewalld(CentOS/RHEL 7+)、ufw(Ubuntu/Debian)和iptables(传统工具),本文将详细介绍通过这三种工具开启端……

    2025年9月30日
    8400
  • 首次配置完成了吗?

    首次使用本系统需完成基础配置,请根据引导设置必要参数或连接所需服务,完成后即可正常启用全部功能。

    2025年7月4日
    12200
  • Ubuntu能否替代Windows系统?

    在Linux服务器上搭建PHP环境是部署动态网站的关键步骤,以下为详细操作指南,遵循最佳实践并兼顾安全性与性能:环境准备系统选择推荐Ubuntu 22.04 LTS或CentOS 7+(需已配置sudo权限用户)更新系统: sudo apt update && sudo apt upgrade……

    2025年6月17日
    11900
  • Linux如何快速查看文件夹大小?

    使用 du 命令(推荐)du(disk usage)是Linux核心工具,专为统计磁盘使用量设计,最权威且高效,基础用法:du -sh /path/to/directory-s:仅显示总大小(不递归显示子目录)-h:以易读格式显示(如KB、MB、GB)示例输出:8G /home/user/Documents进阶……

    2025年7月15日
    13000

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信