linux 查找大目录和大文件的方法(推荐)
今天,在机器上执行命令的时候,发现tab键无法补全了,原因竟然是磁盘空间满了,使用df命令看了一下,确实如此,每个分区的使用率都得到100%了,因此想找到系统中的大目录和大文件,删除一部分。
主要涉及到两个命令 du和find
du命令(查找系统中的大目录):
-h已易读的格式显示指定目录或文件的大小
-s选项指定对于目录不详细显示每个子目录或文件的大小
-m或Cmegabytes 以1MB为单位
Cmax-depth=1:其中,数字“1”是指查询结果中最多显示的目录层数,这里指最多显示一层目录。
首先使用df命令,查看各挂载点磁盘空间的使用情况,然后从使用率接近100%的目录下,查看其各个子目录的大小情况
du -sm * 2> /dev/null | sort -nr | head -5
可以使用sort对du输出的结果进行一个排序(如果du使用h参数,可能得不到正确的排序结果)
以上方法只是对目录大小进行判定,所以当确定某目录过大时,最好是cd到该目录,查看下有无大文件,然后再确定是否进入下一层目录。
find命令(查找系统中的大文件)
获取某个目录下大于800M的所有文件
find . -type f -size +800M
如上命令所示,我们仅仅能看到超过800M大小的文件的文件名称,但是对文件的信息(例如,文件大小、文件属性)一无所知,那么能否更详细显示一些文件属性或信息呢,当然可以,使用如下命令:
find . -type f -size +800M -print0 | xargs -0 ls -l
当找到大文件后,若因某些原因,不想对文件进行删除,可以用echo或cat或clear命令清除文件内容
echo > a.log
clear > a.log