前言

上一篇文章我介绍了Linux使用一条命令删除指定时间的文件
用于快速删除无用文件,解决磁盘空间不足的问题。那么在删除之前,我们要就的就是找大目录或文件,本文将介绍如何快速找大目录或文件。

df

Linux df(英文全拼:disk free) 命令用于显示目前在 Linux 系统上的文件系统磁盘使用情况统计。
在这里插入图片描述
一般/dev/vda1为系统盘,像vdb、vdc为数据盘。

1、-h

我们发现df输出的格式没有单位,可读性太低了。使用-h参数可解决。
-h或–human-readable 以K,M,G为单位,提高信息的可读性。

在这里插入图片描述

du

Linux du (英文全拼:disk usage)命令用于显示目录或文件的大小。

1、-h

  • du -h
    在这里插入图片描述
    从输出可以看出du是显示所有目录和子目录所占用的磁盘空间。

  • du -h .git 显示.git目录下面的所有目录和子目录的大小
    在这里插入图片描述

2、-a

du -ah .git
-a显示所有目录(包括隐藏目录)
在这里插入图片描述

3、–max-depth=<目录层数>

上面的命令都是显示所有目录,如果我只想显示指定层数目录呢?
使用--max-depth=<目录层数> 超过指定层数的目录后,予以忽略。

比如最多显示两层:
在这里插入图片描述

4、sort

你有没有发现上一条命令文件列表的目录大小并不是按照从大到小或从小到大的排序。
使用sort命令即可排序。
使用|来分隔不同的命令。
在这里插入图片描述
从上图可以看出,只是输入sort是不行的,文件大小并没有排序。
是的,必须加入sort参数才行。
下面说下本文会用到的sort参数:

  • -r(--reverse) 以相反的顺序来排序
  • -h( --human-numeric-sort):使用易读性数字(例如:2K、1G),默认从小到大排序
    在这里插入图片描述

5、-s

-s或–summarize 仅显示总计。只显示指定目录或当前目录的大小。
在这里插入图片描述

find

find用于查找到的子目录和文件全部进行显示(包括隐藏目录和文件)。
在这里插入图片描述

-name

使用-name查找当前目录及子目录所有文件后缀为.sh的文件。

  • 查找当前目录,.可以省略掉;
  • 查找其他目录,将.替换为路径
    在这里插入图片描述

-type c

-type c : 文件类型是 c 的文件。

  • -type f:查找普通文件
  • -type d:查找目录

例如将目前目录其其下子目录中所有一般文件列出:

find . -type f

在这里插入图片描述

-ctime

-ctime n : 在过去n天内被修改过的文件
将当前目录及其子目录下所有最近 30 天内更新过的文件列出:
在这里插入图片描述
有关find时间相关的参数-atime、-ctime、-mtime,我在Linux使用一条命令删除指定时间的文件
中有介绍。

-size

-size:查找指定大小的文件

  • 查找大于100M的文件:
    在这里插入图片描述
  • 查找大于100M小于200M的文件:
    在这里插入图片描述

快速查找大目录

  1. 查找系统根目录下的大目录
sudo du -h --max-depth=1 / | sort -hr

注意:系统根目录使用du命令,需要root权限。
在这里插入图片描述
如果小目录过多的话,会显示过多,导致需要滑动查看。
我们使用head命令,来显示列表前几个,默认显示前10个。
要查看前5个,请使用head -5
在这里插入图片描述

可以看到根目录下`ktt`目录,占用空间很大。
  1. 接着查看ktt目录下面的大目录

这里我们将目录层次设置为8,以便减少查询次数。

du -h --max-depth=8 /ktt/ | sort -hr  | head -40 

按照此方法,直至查询到可以删除的目录。

快速查找大文件

例如查找用户目录下面大于100M的文件、需包含文件属性、以及从大到小排序:

find ~ -type f -size +100M | xargs ls -lhS

在这里插入图片描述
那如果我只想显示文件大小和文件路径呢?

find ~ -type f -size +100M | xargs du -h | sort -hr

在这里插入图片描述
xargs:find命令的输出通过管道xargs执行。
xargs 是一个强有力的命令,它能够捕获一个命令的输出,然后传递给另外一个命令。

支持🤟


  • 🎸 [关注❤️我吧],我会持续更新的。
  • 🎸 [点个👍赞吧],码字不易麻烦了。

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐