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)
酷番叔酷番叔
上一篇 1小时前
下一篇 1小时前

相关推荐

  • Linux系统如何修复?常见故障排查与解决步骤指南

    Linux系统作为广泛使用的服务器和桌面操作系统,稳定性较高但偶尔也会遇到各种故障,如引导失败、文件系统损坏、网络异常、软件包冲突等,修复Linux系统需要遵循规范的流程,结合诊断工具和命令逐步排查解决,以下从常见故障场景出发,详细介绍修复步骤及注意事项,修复前的通用准备步骤在开始修复前,务必做好以下准备工作……

    2025年9月10日
    900
  • 如何快速上手Linux模拟器?

    Linux模拟器(如WSL、Cygwin、QEMU等)允许用户在Windows、macOS或其他系统上运行Linux环境,无需安装双系统或虚拟机,本教程以Windows平台为例,重点讲解最主流的WSL(Windows Subsystem for Linux),同时涵盖其他工具的基本用法,为什么使用Linux模拟……

    2025年6月24日
    3600
  • 如何在Linux系统中彻底卸载JDK?

    在Linux系统中卸载JDK(Java Development Kit)是常见的系统维护操作,通常因版本升级、环境冲突或不再需要Java开发环境而进行,卸载过程需根据JDK的安装方式(包管理器安装或手动安装)采用不同方法,同时需注意清理残留文件和环境变量,避免影响后续Java程序运行,以下是详细的卸载步骤及注意……

    16小时前
    400
  • Linux系统中如何执行命令、脚本和可执行程序的步骤?

    Linux作为一款广泛使用的类Unix操作系统,其核心功能之一是通过执行命令或程序来完成用户指定的任务,无论是简单的文件操作,还是复杂的服务管理,都离不开对“执行”过程的理解,本文将从Linux执行的基础机制、命令类型、执行方式及权限控制等方面,详细解析Linux如何执行命令与程序,Linux执行的基础:She……

    2025年8月26日
    1600
  • Debian/Ubuntu升级失败?apt upgrade错误解决

    安装Fortran编译器推荐安装开源的gfortran(GNU Fortran编译器):sudo apt install gfortran# CentOS/RHEL系统sudo yum install gcc-gfortran# 验证安装gfortran –version # 输出版本信息即成功编写示例程序创……

    2025年7月24日
    2300

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信