磁盘爆满?如何秒查Linux大文件?

核心命令详解

du 命令(磁盘使用分析)

适用场景:精准计算目录/文件大小,适合深度扫描。
基础命令

du -ah /path/to/directory | sort -rh | head -n 20
  • 参数解析
    • -a:显示所有文件(包括子目录中的文件)
    • -h:人类可读格式(KB/MB/GB)
    • --max-depth=1:限制扫描深度(例:仅当前目录)
  • 优化示例(仅显示前 10 个大文件):
    du -ah /home 2>/dev/null | sort -rh | head -n 10

    2>/dev/null 忽略权限错误

find 命令(条件过滤)

适用场景:按大小、时间、类型精准检索。
查找大于 100MB 的文件

find / -type f -size +100M 2>/dev/null -exec ls -lh {} \;
  • 关键参数
    • -size +100M:>100MB(支持 k/M/G
    • -exec ls -lh {} \;:结果格式化输出
  • 进阶用法(删除 30 天前的日志):
    find /var/log -name "*.log" -size +50M -mtime +30 -delete

ls 命令(快速目录分析)

适用场景:快速查看目录内大文件。
按大小降序排列

ls -lhS /path/to/directory | head -n 10
  • 参数说明
    • -l:详细列表
    • -h:可读格式
    • -S:按文件大小降序

ncdu 工具(交互式可视化)

适用场景:直观导航文件树,适合复杂目录。
安装与使用

sudo apt install ncdu  # Debian/Ubuntu
ncdu /path/to/scan
  • 操作指南
    • 方向键浏览,Enter 进入目录
    • d 删除文件,g 切换显示单位

场景化解决方案

场景 推荐命令 优势
快速定位根目录大文件 find / -size +1G 精准过滤,支持通配符
分析用户家目录 du -sh ~/* \| sort -rh 避免系统文件干扰
可视化分析(无 GUI 环境) ncdu 交互式操作,避免误删
清理旧日志 find + -mtime 结合时间与大小条件

避坑指南与技巧

  1. 权限处理

    • find/du 命令末尾添加 2>/dev/null 忽略 “Permission denied” 错误。
    • 使用 sudo 执行系统级扫描(谨慎操作)。
  2. 软链接陷阱

    • du -L 跟踪符号链接实际大小
    • find -P 默认不跟踪链接(避免重复统计)
  3. 高效组合命令

    # 统计 /var 下前 5 大目录
    du -h /var --max-depth=1 2>/dev/null | sort -rh | head -n 5
  4. 安全删除建议

    • 先通过 lsncdu 确认文件内容
    • 使用 shred 安全擦除敏感文件:
      shred -uvz large_file.iso  # 覆盖后删除

  • 简单排查:优先使用 ls -lhSdu -sh *
  • 深度扫描:选择 finddu 结合 sort/head
  • 交互需求ncdu 提供可视化操作界面

定期清理大文件(如日志、缓存)可结合 cron 定时任务自动化,操作前务必验证文件用途,避免误删系统关键数据。

引用说明

  • GNU Coreutils 手册:https://www.gnu.org/software/coreutils/
  • find 命令官方文档:https://man7.org/linux/man-pages/man1/find.1.html
  • ncdu 开源项目:https://dev.yorhel.nl/ncdu 基于 Linux 5.4+ 内核及 GNU bash 5.0 测试验证。

原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/8276.html

(0)
酷番叔酷番叔
上一篇 2025年7月21日 19:31
下一篇 2025年7月21日 19:39

相关推荐

  • 如何轻松安装FTP客户端?

    在Linux系统中上传文件到FTP服务器是常见的操作,可通过命令行工具或图形界面实现,以下是详细方法及注意事项,确保操作安全高效:命令行工具(推荐掌握)使用 ftp 基础工具sudo yum install ftp # CentOS/RHEL# 连接服务器ftp ftp.example.com# 输入用户名和密……

    2025年6月23日
    9900
  • linux如何装jdk

    在Linux系统中安装JDK(Java Development Kit)是Java开发环境搭建的基础步骤,根据Linux发行版的不同和个人需求,可选择多种安装方式,如包管理器安装、手动压缩包安装或SDKMAN等工具管理,以下是详细的安装步骤及注意事项,安装前准备工作检查系统架构Linux系统分为32位(i386……

    2025年8月29日
    8400
  • Linux升级软件包的具体方法有哪些?

    在Linux系统中,软件包升级是保持系统安全、稳定及功能更新的核心操作,不同Linux发行版采用不同的包管理器,操作方式略有差异,但核心逻辑一致:更新包索引、升级已安装包、处理依赖关系,以下以主流发行版为例,详细介绍软件包升级的流程及注意事项,基于Debian/Ubuntu系统的APT包管理器Debian及其衍……

    2025年9月29日
    7300
  • VC程序如何与Linux系统实现高效稳定的通信连接?

    在跨平台开发场景中,Visual C++(以下简称VC++)作为Windows环境下的主流开发工具,常需与Linux系统进行数据交互或功能协同,两者分别基于Windows和Linux内核,通信机制存在差异,需通过网络协议、本地IPC(进程间通信)或中间件实现数据交换,本文将系统梳理VC++与Linux通信的主流……

    2025年8月28日
    8600
  • 如何设置硬盘挂载点?

    挂载点是Linux系统中用于连接文件系统的空目录,作为存储设备或分区在目录树中的访问入口。

    2025年7月31日
    11100

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信