Linux下列出所有子目录及磁盘占用情况

本文介绍了解决Jenkins CI服务器磁盘空间不足的方法,包括删除无用项目释放空间和使用du命令快速查看各目录占用空间。
今天 Jenkins(以前叫Hudson)CI服务器突然挂了,排查了半天发现磁盘已经100%,真后悔当初没把磁盘设大点,其实可以用LVM调整一下,但是心里还是没底,怕把数据都丢失了,决定以后再调整磁盘分配。目前先吧Jenkins下没用的项目都干掉,可以腾出很多空间。

我们都知道使用 du命令可以查看目录,例如查看 /home/kuuyee目录占用磁盘空间大小可以使用下面的命令:
1 root@pm - ubuntu: ~ #  du /home/kuuyee -sh               
2 333M     / home / kuuyee

但是有个问题,我的Jenkins目录下有上百个构建项目,一个一个的差看目录占用情况太麻烦了,google了一下找到一个办法:
1 root@pm - ubuntu: ~ #  du /home --max-depth=1 -h
2 125M     / home / linux
3 333M     / home / kuuyee
4 457M     / home

这样的话就吧所有的子目录的磁盘占用情况都列出来了!这里的 --max-depth参数代表着要列出目录的深度,如果要列出两级目录就设置为 2,以此类推。
如果想吧结果输出到文件里可以这样:
1 root@pm - ubuntu: ~ #  du /home --max-depth=1 -h > disk_status.txt

下面给出du命令的用法及参数说明:

用法:du [选项]… [文件]…
或:du [选项]… –files0-from=F
总结每个<文件>的磁盘用量,目录则取总用量。

参数含义如下:
-s 对每个Names参数只给出占用的数据块总数。
-a 递归地显示指定目录中各文件及子孙目录中各文件占用的数据块数。若既不指定-s,也不指定-a,则只显示Names中的每一个目录及其中的各子目录所占的磁盘块数。
-b 以字节为单位列出磁盘空间使用情况(系统缺省以 k 字节为单位)。
-k 以1024字节为单位列出磁盘空间使用情况。
-c 最后再加上一个总计(系统缺省设置)。
-l 计算所有的文件大小。

<think>嗯,用户想了解在Linux系统中如何以M为单位显示目录下文件大小的具体方法。根据提供的引用内容,有以下几种方法: 1. 使用`ls -lh`命令是最简单直接的方式:引用[1]明确指出,配合`-l`列表形式和`-h`选项就能以K/M/G单位显示文件大小。比如查看`/var/log`目录: ```bash ls -lh /var/log ``` 2. 使用`du -h --max-depth=1`查看目录大小:引用[4]给出了具体示例,命令会递归显示每个子目录的大小并以人类可读格式输出。例如查看当前目录: ```bash du -h --max-depth=1 ``` 用户特别要求M单位时,可改用`-m`选项: ```bash du -m --max-depth=1 ``` 3. 引用[3]的示例证明`ls -lh`和`du -h`输出的实际效果:14M的nohup.out、8.7G的bam文件等,说明这两种方法都符合需求。 4. 用户可能需要补充知识点:引用[2]提到Linux新手常遇到的困惑,建议说明`-h`选项的通用性(多数命令支持)。另需提醒`du`和`ls`的区别——前者统计磁盘占用,后者显示文件实际大小。 5. 衍生问题可围绕不同场景设计:比如如何仅显示大于100M的文件(过滤需求),如何统计目录总大小(汇总需求),以及解决符号链接等特殊情况。 最终回复将按用户要求用中文组织,确保命令语法准确性,并在末尾添加引用标记。 </think>在 Linux 系统中,有以下几种常用方法可以**以 M 为单位显示目录下文件大小**: ### 📁 方法一:使用 `ls` 命令(显示文件大小) ```bash ls -lh ``` * **作用**:以列表形式显示当前目录内容,文件大小自动转换为 K/M/G 等易读单位 * **示例输出**: ``` -rw-r--r-- 1 user group 14M Aug 1 10:23 nohup.out -rw-r--r-- 1 user group 27M Aug 2 15:30 show.log ``` * **说明**:`-l` 启用列表模式,`-h` 启用人类可读格式(自动转换单位为 K/M/G)[^1][^3] ### 📊 方法二:使用 `du` 命令(显示磁盘占用) ```bash # 查看当前目录所有文件/子目录大小(M单位) du -m --max-depth=1 # 查看指定目录大小(例如 /var/log) du -m --max-depth=1 /var/log ``` * **参数说明**: * `-m`:强制以 MB 为单位显示 * `--max-depth=1`:仅显示当前目录层级(不递归子目录) * **示例输出**: ``` 408 ./logs 24 ./cache 1024 ./data ``` * **进阶用法**: ```bash # 按大小排序(最大文件在前) du -m --max-depth=1 | sort -nr ``` [^4] ### 🔍 方法三:组合命令(显示特定文件大小) ```bash # 查找大于 100M 的文件 find . -type f -size +100M -exec ls -lh {} \; ``` * **输出示例**: ``` -rw-r--r-- 1 user group 8.7G Jul 30 09:00 ./RMNISTHS_30xdownsample.bam ``` --- ### 📌 关键区别说明 | 命令 | 显示内容 | 适用场景 | |------|----------------------|----------------------------| | `ls` | 文件实际大小 | 查看文件详细属性 | | `du` | 文件磁盘占用空间 | 分析存储消耗 | | `find`| 过滤特定大小的文件 | 定位大文件 | > ⚠️ 注意:`du` 显示磁盘占用可能大于 `ls` 的文件大小(受磁盘块分配影响),如需精确分析存储空间,建议优先使用 `du -m`[^2][^4]。 --- ### 📚 相关问题 1. 如何仅显示大于 100MB 的文件? **答**:`find . -type f -size +100M -exec ls -lh {} \;` 2. 如何统计目录的总大小(以 MB 为单位)? **答**:`du -sm 目录路径`(示例:`du -sm /home` 显示 /home 总大小) 3. 为什么 `du` 和 `ls` 显示的大小有时不一致? **答**:`du` 统计磁盘占用(通常为 4K 的整数倍),`ls` 显示文件实际字节数。稀疏文件或磁盘块分配会导致差异[^2]。 4. 如何显示隐藏文件的大小? **答**:`ls -lha` (`-a` 参数显示隐藏文件) --- > **操作建议**:日常查看文件大小推荐 `ls -lh`,分析存储占用推荐 `du -m --max-depth=1`。对于运维工作,建议将常用命令存入笔记,避免临时查文档的低效情况[^2]。 [^1]: Linux列出目录内容的命令 [^2]: 开发常用Linux命令指南 [^3]: 以K/M/G为单位显示文件大小 [^4]: `du`命令查询目录大小
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值