Linux服务器可能运行时间久了,服务器的磁盘空间占用可能很大,在我们不清楚是哪些文件占用空间比较大时,需要使用用命令(ls、find或du)查找一下所有可能出现大文件的目录,找到具体文件进行处理,本文主要介绍一下Linux 使用ls、find或du查找所有目录中的大文件的方法。

1、使用 ls 命令查找大文件

使用ls命令适合查找指定目录中的大文件,不适合查找不确定哪个目录中有大文件的情况。

ls -lSh /data/log/ | head -20

参数说明:

参数

描述

-S

文件和目录的大小排序,从大到小显示,-Sr是从小到大显示。

-h

用"K","M","G"来显示文件和目录的大小。

-l

使用详细格式列表,除了文件名之外,

还将文件的权限、所有者、文件大小等信息详细列出来。

2、使用 find 命令查找大文件

使用find命令可以递归查找一个目录中的子目录,适合查找不确定哪个目录中有大文件的情况。

1)查找所有目录中5个最大的文件

sudo find / -type f -printf "%s\t%p\n" | sort -n | tail -5 | xargs ls -Slh

2)查找所有目录中大于100M的文件

sudo find / -type f -size +100M | xargs ls -Slh

3)查找所有目录中100M和200M之间的文件

sudo find / -type f -size +100M -size +200M | xargs ls -Slh

4)查找所有目录中7天以前最大的5个文件

sudo find / -type f -mtime +7 -printf "%s\t%p\n" | sort -n | tail -5 | xargs ls -Slh

参数说明:

find:

参数

说明

-exec

如果find指令的回传值为True,

就执行该指令;

-mtime n 

查找系统中,

最后n天被改变文件数据的文件 +大于 -小于

-type 

查找某一类型的文件

块设备文件;

字符设备文件;

目录;

管道文件;

普通文件;

符号链接文件;

s

socket文件;

printf <输出格式>

假设find指令的回传值为Ture,

就将文件或目录名称列出到标准输出。

格式可以自行指定;

sort:

参数

说明

-n

依照数值的大小排序;

-r

以相反的顺序来排序;

xargs:传递参数

3、使用 du 命令查找大文件

使用du 命令可以查看磁盘中目录的空间使用情况。

1)查找所有目录中5个最大的目录或文件(包括子文件夹)

du -Sh / | sort -rh | head -n5

2)查找当前文件夹中最大的5个目录或文件

du -ah --max-depth=1 | sort -nr | head -n5

3)查找指定文件夹中最大的5个目录或文件

du -ah /home --max-depth=2 | sort -nr | head -n5

注意:--max-depth是指定目录的级别,如果目录是以/结尾,需要去掉结尾的/,去掉之后目录级别就是/的个数加1,需要根据指定目录的不同来指定目录级别。

参数说明:

参数

说明

-a

显示所有目录或文件的大小

-h

以K,M,G为单位,提高信息可读性

-S

显示目录的大小,但不含子目录大小

推荐文档