Linux查找大文件、大目录 - 解决磁盘空间不足的问题
前言
上一篇文章我介绍了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的文件:
快速查找大目录
- 查找系统根目录下的大目录
sudo du -h --max-depth=1 / | sort -hr
注意:系统根目录使用du命令,需要root权限。
如果小目录过多的话,会显示过多,导致需要滑动查看。
我们使用head
命令,来显示列表前几个,默认显示前10个。
要查看前5个,请使用head -5
:
可以看到根目录下`ktt`目录,占用空间很大。
- 接着查看
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 是一个强有力的命令,它能够捕获一个命令的输出,然后传递给另外一个命令。
支持🤟
- 🎸 [关注❤️我吧],我会持续更新的。
- 🎸 [点个👍赞吧],码字不易麻烦了。
更多推荐
所有评论(0)