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 | 查找某一类型的文件 |
b | 块设备文件; |
c | 字符设备文件; |
d | 目录; |
p | 管道文件; |
f | 普通文件; |
l | 符号链接文件; |
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 | 显示目录的大小,但不含子目录大小 |