Linux下查看文件夹及文件大小,常用du命令:du -sh快速获取目录总大小,du -h --max-depth=1列出一级子目录大小;结合sort -hr可按大小倒序排序,--exclude可排除特定文件(如--exclude="*.log"),交互式工具ncdu支持可视化浏览,按n按名称、s按大小排序,适合深度分析大文件位置,find . -type f -exec du -sh {} \;可单独查看各文件大小,这些方法能高效定位大文件,助力存储管理与优化。
在Linux系统管理中,磁盘空间管理是一项日常重要任务,无论是排查服务器存储瓶颈,还是清理本地电脑的冗余文件,快速准确地查看文件夹及其所有文件的大小都是关键技能,本文将详细介绍Linux下查看文件夹及文件大小的多种方法,涵盖基础命令、高级组合及实用技巧,帮助你高效掌握磁盘空间分析能力。
为什么需要查看文件夹及文件大小?
在开始介绍方法前,先明确场景需求:
- 服务器运维:发现磁盘空间不足(如
df -h显示根目录使用率100%),需定位占用空间大的目录或文件; - 个人电脑清理:查找下载目录、缓存文件夹中的大文件,释放存储空间;
- 数据分析:统计项目目录下各模块的代码量或数据文件大小,优化存储结构。
针对不同场景,选择合适的命令能大幅提升效率。

核心方法:使用du命令查看文件夹大小
du(disk usage)是Linux系统内置的磁盘使用情况分析工具,专为查看目录及文件大小设计,是本文的核心方法。
基础用法:查看当前目录总大小
最简单的用法是直接在目标目录下执行du,默认以字节为单位显示目录及其子目录的大小:
du
但输出结果会包含所有子目录的逐级统计,信息冗余,此时可结合-s(summary,显示总计)和-h(human-readable,人类可读单位)参数,快速获取目录总大小:
du -sh
示例输出(假设当前目录总大小为1.2GB):
2G .
查看指定目录的大小
若要查看其他目录(如/var/log)的大小,只需指定目录路径:
du -sh /var/log
查看目录下一级子目录的大小(不递归)
若只想查看当前目录直接子目录的大小(不深入子子目录),可使用--max-depth=1(或-d 1):
du -h --max-depth=1
示例输出(假设当前目录有3个子目录):
0K ./docs
256M ./downloads
1.2G ./projects
查看所有文件及目录的大小(含子目录)
若需递归显示所有文件和子目录的大小(默认行为),可加-a(all)参数:
du -ah
输出会按目录层级列出每个文件和目录的大小,适合精细分析,但文件较多时可能需要结合排序(后文详述)。
排除特定目录或文件
实际场景中,常需排除某些目录(如临时目录.cache)或文件(如.log)。du支持--exclude参数,通过通配符排除目标:
# 排除所有以".cache"结尾的目录 du -sh --exclude="*.cache" /path/to/dir # 排除特定目录(如node_modules) du -sh --exclude=node_modules /path/to/project
进阶技巧:结合sort、find等命令精准定位
du本身仅能统计大小,结合其他命令可实现排序、筛选、定位大文件等高级功能。
按大小排序,找出占用空间最大的目录
若要按从大到小排序目录大小,可将du的输出通过管道()传递给sort命令:
du -h --max-depth=1 | sort -hr
参数说明:
sort -h:以人类可读单位(K、M、G)排序(需coreutils支持,现代Linux默认安装);sort -r:降序排列(默认升序)。
示例输出:
2G ./projects
256M ./downloads
4.0K ./docs
定位最大的10个文件或目录
若要找出整个目录下最大的N个文件,可结合find和sort:
find . -type f -exec du -h {} + | sort -hr | head -n 10
参数说明:
find . -type f:查找当前目录下的所有文件(-type f表示文件,排除目录);-exec du -h {} +:对每个文件执行du -h,比\;更高效(批量处理);head -n 10:取

