当前位置: 首页 > article >正文

【Linux系列】目录大小查看

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。
img

  • 推荐:kwan 的首页,持续学习,不断总结,共同进步,活到老学到老
  • 导航
    • 檀越剑指大厂系列:全面总结 java 核心技术,jvm,并发编程 redis,kafka,Spring,微服务等
    • 常用开发工具系列:常用的开发工具,IDEA,Mac,Alfred,Git,typora 等
    • 数据库系列:详细总结了常用数据库 mysql 技术点,以及工作中遇到的 mysql 问题等
    • 新空间代码工作室:提供各种软件服务,承接各种毕业设计,毕业论文等
    • 懒人运维系列:总结好用的命令,解放双手不香吗?能用一个命令完成绝不用两个操作
    • 数据结构与算法系列:总结数据结构和算法,不同类型针对性训练,提升编程思维,剑指大厂

非常期待和您一起在这个小小的网络世界里共同探索、学习和成长。💝💝💝 ✨✨ 欢迎订阅本专栏 ✨✨

博客目录

    • 一、`du` 命令基础
      • 基本语法
      • 为什么需要 `-h` 选项?
    • 二、`du -h` 命令详解
      • 输出解读
      • 常用选项组合
    • 三、`du` 与其他命令的对比
      • `du` vs `df`
      • `du` vs `ls -l`
    • 四、实际应用场景
      • 1. 查找大目录
      • 2. 监控用户磁盘使用
      • 3. 排除特定目录
      • 4. 比较目录变化
    • 五、高级技巧与注意事项
      • 1. 处理符号链接
      • 2. 显示修改时间
      • 3. 性能优化
      • 4. 跨文件系统统计
    • 六、常见问题解答

在 Linux 系统管理和日常维护中,了解文件和目录占用磁盘空间的情况是一项基本而重要的任务。du(Disk Usage)命令是完成这一任务的强大工具,而 du -h 则是其中最常用的命令形式之一。

一、du 命令基础

du(Disk Usage)命令是 Linux/Unix 系统中用于估算文件和目录磁盘使用情况的实用程序。它通过递归遍历目录结构,计算每个文件和子目录占用的磁盘空间,并以块为单位(默认情况下)显示结果。

基本语法

du [选项] [文件或目录]

如果不指定文件或目录,du 会默认统计当前目录及其所有子目录的磁盘使用情况。

为什么需要 -h 选项?

原始的 du 命令输出以磁盘块为单位(通常 1 块=512 字节或 1KB),这种表示方式对人类阅读不够友好。例如:

du data

可能输出:

123456  data/subdir1
789012  data/subdir2
912468  data

这样的数字难以直观理解。-h(human-readable)选项的出现解决了这个问题,它会自动选择最合适的单位(KB、MB、GB 或 TB)来显示大小:

du -h data

输出变为:

4.0K    data/subdir1
8.2M    data/subdir2
1.2G    data

在这里插入图片描述

二、du -h 命令详解

输出解读

du -h 的典型输出包含多行信息:

  1. 子目录行:显示每个子目录的大小和路径
  2. 总计行(最后一行):显示指定目录的总大小

例如:

4.0K    data/subdir1
8.2M    data/subdir2
1.2G    data

这里:

  • data/subdir1 占用 4.0KB
  • data/subdir2 占用 8.2MB
  • 整个 data 目录占用 1.2GB

常用选项组合

  1. -s(汇总):仅显示总大小,不显示子目录详情

    du -sh data
    

    输出:

    1.2G    data
    
  2. -c(总计):在最后添加一个总计行

    du -hc data
    

    输出:

    4.0K    data/subdir1
    8.2M    data/subdir2
    1.2G    data
    1.2G    总用量
    
  3. --max-depth=N:控制显示的目录深度

    du -h --max-depth=1 data
    

    只显示 data 下第一级子目录的大小

三、du 与其他命令的对比

du vs df

  • du(Disk Usage):从文件系统角度计算文件和目录占用的空间
  • df(Disk Free):显示文件系统的整体磁盘使用情况

du 更适合查找具体目录或文件占用的空间,而 df 更适合查看整个磁盘或分区的使用情况。

du vs ls -l

  • ls -l 显示的是文件的实际大小(逻辑大小)
  • du 显示的是文件占用的磁盘空间(可能因块分配而大于实际大小)

例如,一个 1 字节的文件:

  • ls -l 显示 1 字节
  • du 可能显示 4KB(取决于文件系统的块大小)

四、实际应用场景

1. 查找大目录

du -h / | sort -rh | head -n 20

这条命令组合:

  1. 从根目录开始计算所有目录大小
  2. 按人类可读格式输出
  3. 按大小逆序排序
  4. 显示前 20 个最大的目录

2. 监控用户磁盘使用

du -sh /home/*

快速查看所有用户主目录的磁盘使用情况。

3. 排除特定目录

du -h --exclude='*.log' /var

统计 /var 目录大小,但排除所有 .log 文件。

4. 比较目录变化

du -sh data
# 进行一些操作后
du -sh data

通过两次执行比较目录大小的变化。

五、高级技巧与注意事项

1. 处理符号链接

默认情况下,du 会统计符号链接指向的文件大小。使用 -L 选项可以跟随符号链接:

du -Lh /path

2. 显示修改时间

结合 --time 选项可以显示最后修改时间:

du -h --time data

3. 性能优化

对于大型文件系统,du 可能需要较长时间。可以:

  1. 使用 --apparent-size 显示表观大小而非磁盘使用量(更快但不够准确)
  2. 限制目录深度 --max-depth
  3. 在非高峰时段运行

4. 跨文件系统统计

默认 du 会统计挂载点下的其他文件系统。使用 -x 可以限制在当前文件系统:

du -xh /

六、常见问题解答

Q1:为什么 dudf 显示的总空间不一致?

A1:可能原因包括:

  • 已删除但仍有进程打开的文件
  • 文件系统保留空间
  • 不同的统计方法(df 统计整个文件系统,du 统计具体文件)

Q2:如何统计目录中的文件数量而非大小?

A2:使用 findwc

find data -type f | wc -l

Q3:du 显示的 size 为什么比实际文件总和要大?

A3:du 统计的是磁盘使用量,包括:

  • 文件实际内容
  • 文件系统元数据
  • 由于块分配导致的额外空间

觉得有用的话点个赞 👍🏻 呗。
❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄

💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍

🔥🔥🔥Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙

img

相关文章:

【Linux系列】目录大小查看

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...

2048游戏(含Python源码)

前言 相关参考游戏: 像素飞机大战(含Python源码)-CSDN博客https://blog.csdn.net/weixin_64066303/article/details/147693018?spm1001.2014.3001.5501使用DeepSeek定制Python小游戏——以“俄罗斯方块”为例-CSDN博客https://blog.csdn.n…...

SwiftData 数据持久化解决方案

什么是 SwiftData? SwiftData 是苹果在 WWDC23 上推出的全新数据持久化框架,它构建在 Core Data 之上,但提供了更加 Swift 友好的 API。SwiftData 旨在简化数据模型的创建和管理,让开发者能够以更少的代码实现强大的数据持久化功…...

中间件-RocketMQ

RocketMQ 基本架构消息模型消费者消费消息模式顺序消息机制延迟消息批量消息事务消息消息重试最佳实践 基本架构 nameServer: 维护broker列表信息,客户端连接时只需要连接nameServer。可配置成集群。 broker:broker分为master和slave,master负…...

PostgreSQL 的 pg_current_logfile 函数

PostgreSQL 的 pg_current_logfile 函数 pg_current_logfile() 是 PostgreSQL 9.6 版本引入的一个系统管理函数,用于获取当前正在使用的日志文件路径。 一 基本用法 1 函数定义 pg_current_logfile([text]) → text2 简单查询 -- 获取当前日志文件路径 SELECT …...

Python就业方向有哪些?

Python 作为一门通用、易学且功能强大的编程语言,在多个领域都有广泛的应用,因此就业方向也非常多样化。以下是 Python 主要的就业方向及相关技能要求。 1. Web 开发 岗位:Python Web 开发工程师、后端工程师、全栈工程师技术栈&#xff1a…...

iptables 访问控制列表使用记录

iptables 是linux操作系统上自带的防火墙程序,功能强大,能够依据策略过滤掉一些恶意访问流量,本次记录一下iptables的常见使用方法,未尽之处,欢迎补充。 一、iptables 下载 我这里使用的是华为openEuler 22.03版本&am…...

16. Qt系统相关:事件、定时器

1. Qt事件 1.1 简介 事件是应用程序内部或者外部产生的事情或者动作的统称。在Qt中使用一个对象来表示一个事件。所有的Qt事件均继承于抽象类QEvent。事件是由系统或者Qt平台本身在不同的时刻发出的。当用户按下鼠标、敲下键盘,或者是窗口需要重新绘制的时候&#…...

云平台搭建

物联网云平台的基本概述 基本概念 随着物联网技术的快速发展,越来越多的设备需要接入网络以实现智能化功能,物联网平台应运而生。 物联网云平台(IoT Cloud Platform)是物联网生态系统中的核心组件,它通过提供一系列…...

数学实验(Matlab语言环境和线性代数实验)

一、Matlab语言环境和线性代数实验 1.Matlab语言环境 Matlab简介 Matlab:Matrix Laboratry 矩阵实验室 Matlab 提供了强大的科学计算、灵活的程序设计流程、高质量的图形可视化与界面设计等功能,被广泛应用于科学计算、控制系统、信息处理等领域的分…...

sherpa:介绍

更多内容:XiaoJ的知识星球 目录 1. sherpa 介绍 1. sherpa 介绍 sherpa是 Next-gen Kaldi 项目的部署框架。 sherpa 支持在各种平台上部署与语音相关的预训练模型,并提供多种语言绑定。 目前,sherpa 拥有以下子项目: k2-fsa/sh…...

图片上传的util和使用

图片上传的util package com.ruoyi.web.controller.common.utils;import org.springframework.beans.factory.InitializingBean; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Configuration; import org.spri…...

2025年4月个人工作生活总结

本文为 2025年4月工作生活总结。 研发编码 一个项目的临时记录 自2月份领导让我牵头负责一个项目起,在本月算是有较多时间投入——但也是与之前的相比。 月初,清明节前一晚上,因某事务被叫上参加临时紧急远程会议,几方领导都在…...

利用Elixir中的原子特性 + 错误消息泄露 -- Atom Bomb

题目信息: This new atom bomb early warning system is quite strange… 题目使用 elixir 语言 一开始,我们会访问 /page.html <!DOCTYPE html> <!-- 设定文档语言为英语 --> <html lang"en"> <head><!-- 设定字符编码为UTF-8 --><…...

numpy pandas

视频链接 numpy numpy是基于一个矩阵的运算 矩阵的属性 import numpy as np# 把一个列表转换成矩阵的方法 array np.array([[1,2,3],[3,4,5]])# 打印矩阵 print(array)# 维度 print(number of dim:,array.ndim)# 行数和列数 print(shape:,array.shape)# 总共有多少个元素在…...

Amazon Redshift 使用场景解析与最佳实践

作为 AWS 云上数据仓库服务的核心成员&#xff0c;Amazon Redshift 凭借其高性能、可扩展性与经济性&#xff0c;正在成为越来越多企业实现数据驱动决策的首选方案。本文将解析 Redshift 的典型使用场景&#xff0c;并分享几项实用的落地最佳实践&#xff0c;帮助企业在数据仓库…...

STM32F446 RTC在VDD/VDDA关闭后失振问题的分析与解决

【原创】STM32F446 RTC在VDD/VDDA关闭后失振问题的分析与解决 作者: 思考的味道[你的ID] | weix_42368227 版权声明: 禁止未经授权转载 1. 问题描述 在某低功耗STM32F446项目中&#xff0c;采用以下供电方案&#xff1a; VDD&#xff1a;由DC-DC 3.3V提供&#xff08;主电源…...

SSM框架(Spring + Spring MVC + MyBatis)整合配置的详细步骤

以下是 SSM框架&#xff08;Spring Spring MVC MyBatis&#xff09;整合配置的详细步骤&#xff0c;适用于 Maven 项目。 &#xff08;一&#xff09;、pom.xml中添加相关依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"ht…...

Elasticsearch 中的索引模板:如何使用可组合模板

作者&#xff1a;来自 Elastic Kofi Bartlett 探索可组合模板以及如何创建它们。 更多阅读&#xff1a; Elasticsearch&#xff1a;可组合的 Index templates - 7.8 版本之后 想获得 Elastic 认证吗&#xff1f;查看下一期 Elasticsearch Engineer 培训的时间&#xff01; El…...

内存泄漏系列专题分析之七:高通相机CamX--Android通用ION(dmabuf)内存分配和释放原理

【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:内存泄漏系列专题分析之六:高通camx 内存泄漏测试的未回收问题分析 这一篇我们开始讲:内存泄漏系列专题分析之七:高通相机CamX--Android通用ION(dmabuf)内存分配和释放原理 目录 一、背景 二、…...

【LeetCode 42】接雨水(单调栈、DP、双指针)

题面&#xff1a; 思路&#xff1a; 能接雨水的点&#xff0c;必然是比两边都低&#xff08;小&#xff09;的点。有两种思路&#xff0c;一种是直接计算每个点的最大贡献&#xff08;也就是每个点在纵向上最多能接多少水&#xff09;&#xff0c;另一种就是计算每个点在横向上…...

【JS逆向基础】前端基础-HTML与CSS

1&#xff0c;flask框架 以下是一个使用flask框架写成的serve程序 # noinspection PyUnresolvedReferences #Flash框架的基本内容from flask import Flask app Flask(__name__)app.route(/index) def index():return "hello index"app.route(/login) def login():re…...

什么是HTML、CSS 和 JavaScript?

HTML、CSS 和 JavaScript 是构建网页的三大核心技术&#xff0c;它们分工明确又紧密协作。接下来我将分别介绍三者的定义、功能&#xff0c;并阐述它们如何共同构成网页&#xff0c;最后推荐学习资源。 一、HTML&#xff1a;网页的骨架与内容基础 HTML&#xff08;HyperText …...

手机网页提示ip被拉黑名单什么意思?怎么办

‌当您使用手机浏览网页时&#xff0c;突然看到“您的IP地址已被列入黑名单”的提示&#xff0c;是否感到困惑和不安&#xff1f;这种情况在现代网络生活中并不罕见&#xff0c;但确实会给用户带来诸多不便。本文将详细解释IP被拉黑的含义、常见原因&#xff0c;并提供一系列实…...

CCF编程能力等级认证 一级 第一次课

介绍 CCF 编程能力等级认证&#xff08;GESP&#xff09;为青少年计算机和编程学习者提供学业能力验证的规则和平台&#xff0c;由中国计算机学会发起并主办。 每年考试分四次&#xff0c;时间是每年的3月、6月、9月、12月&#xff0c;以当年每期公布的时间为准。 GESP适用年…...

SpringBoot 讯飞星火AI WebFlux流式接口返回 异步返回 对接AI大模型 人工智能接口返回

介绍 用于构建基于 WebFlux 的响应式 Web 应用程序。集成了 Spring WebFlux 模块&#xff0c;支持响应式编程模型&#xff0c;构建非阻塞、异步的 Web 应用。WebFlux 使用了非阻塞的异步模型&#xff0c;能够更好地处理高并发请求。适合需要实时数据推送的应用场景。 WebClie…...

Python爬虫中time.sleep()与动态加载的配合使用

一、动态加载网页的挑战 动态加载网页是指网页的内容并非一次性加载完成&#xff0c;而是通过JavaScript等技术在用户交互或页面加载过程中逐步加载。这种设计虽然提升了用户体验&#xff0c;但对于爬虫来说&#xff0c;却增加了抓取的难度。传统的爬虫方法&#xff0c;如简单…...

学习Cesium Entities

🌐 Cesium中的Entities系统趣味学习 📊 Entities系统架构流程图 #mermaid-svg-Lkue5O3gYOkEVSbD {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-Lkue5O3gYOkEVSbD .error-icon{fill:#552222;}#mermaid-svg-Lku…...

如何减少锁竞争并细化锁粒度以提高 Rust 多线程程序的性能?

在并发编程中&#xff0c;锁&#xff08;Lock&#xff09;是一种常用的同步机制&#xff0c;用于保护共享数据免受多个线程同时访问造成的竞态条件&#xff08;Race Condition&#xff09;。然而&#xff0c;不合理的锁使用会导致严重的性能瓶颈&#xff0c;特别是在高并发场景…...

Logback官方文档翻译章节目录

Logback官方文档翻译章节目录 第一章 Logback简介 第二章 Logback的架构&#xff08;一&#xff09; Logback的架构&#xff08;二&#xff09; Logback的架构&#xff08;三&#xff09; 持续更新中…...